Linux學習之shell指令碼

2021-08-02 12:45:24 字數 1421 閱讀 1789

第一行:#!/bin/bash  --> #! 標記指令碼的直譯器

指令碼: #!/bin/bash

echo "hello world"

賦予執行許可權 chmod +x ./test.sh

執行指令碼:./test.sh

定義變數時不需要 $ 符號 :td='date "+%y%m%d"'

1.變數名和符號之間不能有空格

2.首個字元必須為字母

3.中間不能有空格,可以使用劃線(_)

4.不能使用標點符號和 bash 中的關鍵字

除了顯示賦值,還可用語句直接給變數賦值

for file in 'ls /etc' 將 /etc目錄下的檔名迴圈出來

使用乙個定義過的變數,只需在變數名前加上 $ 符號即可 echo $td 或 echo $

對同乙個變數名,可以進行二次賦值 eg: td='date "+%m%d"'

唯讀變數:readonly 定義變數為唯讀變數,變數值不可更改

url=""

readonly url

url="" --> 報錯

刪除變數: unset variable_nae,不能刪除唯讀變數

shell存在三種變數:①區域性變數:指令碼或命令中定義,僅在當前指令碼有效

②環境變數:所有程式有效

③shell變數:由shell程式設定的變數,有區域性也有環境

單引號字串中不能有變數,不能做字元轉義,雙引號可以實現。

your_name="world"

拼接字串 greeting="hello,$ !" 

獲取字串長度 $ 

提取1—4的字串,下標從0開始 $ 

查詢字串 $(expr index "$" world)

反引號用於命令替換:td=`date "+%y%m%d"` 等同於 $(date "+%y%m%d")

./test.sh 1 2 3

執行的檔名:$0  --> ./test.sh

第乙個引數為:$1  --> 1

第二個引數為:$2  --> 2

第三個引數為:$3  --> 3

引數的個數為:$# --> 3

指令碼執行的當前程序id:$$ -->8010

顯示所有傳遞的引數:$*  -->1 2 3

$* 與 $@ 的區別:$* 等價於 「1 2 3」 ,相當於傳遞了乙個引數,$@ 等價於 「1」 「2」 「3」 相當於傳遞了三個引數

shell陣列:array_name=(value1 ... valuen) --> my_array=(a b "c" d)

讀取陣列元素:$

獲取所有陣列元素: $ 或 $ 

獲取陣列長度: $ 或 $ 

shell 基本運算子:

linux之shell指令碼學習

1,linux的shell種類眾多。shell常見種類如bourne shell usr bin sh或 bin sh bourne again shell bin bash c shell usr bin csh k shell usr bin ksh shell for root sbin sh...

Linux學習之Shell指令碼程式設計

一.shell指令碼定義 shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。實際上shell是乙個命令直譯器,它解釋由使用者輸入的命令並且把它們送到核心。shell翻譯成殼的意思,它是包裹在linux核心外層的,乙個可通過一系列的li...

linux之shell指令碼學習(一)

bin bash echo hello your name longxiong echo your name echo for i in ls opt do echo done str 1234 echo unset str echo echo 執行的指令碼為 0 echo 第乙個引數 1 echo...