shell指令碼:就是說我們把原來linux命令或語句放在乙個檔案中,然後通過這個程式檔案去執行時,我們就說這個程式為shell指令碼或shell程式;我們可以在指令碼中輸入一系統的命令以及相關的語法語句組合,比如變數,流程控制語句等,把他們有機結合起來就形成了乙個功能強大的shell指令碼
先手寫乙個指令碼體驗一下:
[root@ldh~] # vim test.sh #寫入以下內容注釋:
1、!/bin/bash 作用:告訴指令碼使用的是哪種命令直譯器。如不指shell,以當前shell作為執行的shell。
2、在shell中以#開始頭表示,整個行就被當作乙個注釋。執行時被忽略。
3、shell程式一般以.sh結尾
[root@ldh~]# chmod +x test.sh
[root@ldh~]# ./test.sh #執行
hello world
建立shell程式的步驟:
第一步:建立乙個包含命令和控制結構的檔案。
第二步:修改這個檔案的許可權使它可以執行。 使用chmod +x test.sh
第三步:檢測語法錯誤
第四步:執行 ./example
shell指令碼的執行通常有以下幾種方式
1、/root/test.sh 或者 ./test.sh (當前路徑下執行指令碼的話要有執行許可權chmod +x test.sh)
2、bash test.sh 或 sh test.sh (這種方式可以不對指令碼檔案新增執行許可權)
3、source test.sh (可以沒有執行許可權)
4、sh < test.sh 或者 cat test.sh |sh(bash)
變數是shell 傳遞資料的一種方法。變數是用來代表每個值的符號名。我們可以把變數當成乙個容器,通過變數,可以在記憶體中儲存資料。也可以在指令碼執行中進行修改和訪問儲存的資料
變數的設定規則:
1、 變數名稱通常是大寫字母,它可以由數字、字母(大小寫)和下劃線_組成。變數名區分大小寫;但是大家要注意變數名稱不能以數字開頭
2、 等號 = 用於為變數分配值,在使用過程中等號兩邊不能有空格
3、 變數儲存的資料型別是整數值和字串值
4、 在對變數賦於字串值時,建議大家用引號將其括起來。因為如果字串中存在空格隔符號。需要使用單引號或雙引號
5、 要對變數進行呼叫,可以在變數名稱前加美元符號$
6、 如果需要增加變數的值,那麼可以進行變數值的疊加。不過變數需要用雙引號包含「變數名
」或用變數名」或用
變數名」或用
包含變數的分類
按照變數的作用可以分成4類:
1、使用者自定義變數
2、環境變數:這種變數中主要儲存的是和系統操作環境相關的資料。
3、位置引數變數:這種變數主要是用來向指令碼當中傳遞引數或資料的,變數名不能自定義,變數作用是固定的。
4、預定義變數:是bash中已經定義好的變數,變數名不能自定義,變數作用也是固定的。
按照變數作用域可以分成2類:全域性變數和區域性變數。
區域性變數是shell 程式內部定義的,其使用範圍僅限於定義它的程式,對其它程式不可見。包括:使用者自定義變數、位置變數和預定義變數。
全域性變數是環境變數,其值不隨shell 指令碼的執行結束而消失。
變數名命名規則:由字母或下劃線打頭,不允許數字開頭,後面由字母、數字或下劃線組成,並且大小寫字母意義不同。在使用變數時,在變數名前加$
例1:給變數var1賦值
[root@ldh ~]# var1=123例2:錯誤的賦值方式,不允許數字開頭,等號兩邊不能有空格[root@ldh ~]# echo $var1
123variable [ˈveəriəbl] 變數
[root@ldh~]# var2 =456變數值的疊加,使用${}bash: var2: 未找到命令…
[root@ldh~]# var2= 456
bash: 456: 未找到命令…
[root@ldh~]# var2 = 456
bash: var2: 未找到命令…
n am
e是name是
name
是的簡化版本,但是在某些情況下,還必須使用花括號引起的方式來消除歧義並避免意外的結果
[root@ldh~]# var4=mysql[root@ldh~]# echo $var4
mysql
[root@ldh~]# echo $var4-db.log
mysql-db.log
shell指令碼基礎
執行shell指令碼有兩種方法 1 作為可執行程式 將上面的 儲存為 test.sh,並 cd 到相應目錄 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼 注意,一定要寫成 test.sh,而不是 test.sh,執行其它二進位制的程式也一樣,直接寫 test.s...
shell指令碼基礎
shell定義 shell是命令解析器,將使用者的輸入的指令轉化為機器可以執行的程式。和c語言不同,指令碼有自己的語法。比較常用的格式是 bin bash或者 bin sh 如 這是乙個判斷輸入字元型別的程式 bin bash read key case in a z echo upperlette...
Shell指令碼基礎
1 shell是使用者與核心進行互動操作的一種介面,目前最流行的shell稱為bash shell 2 shell也是一門程式語言 解釋型的程式語言 即shell指令碼 3 乙個系統可以存在多個shell,可以通過cat etc shells命令檢視系統中安裝的shell,不同的shell可能支援的...