一、創建shell腳本文件
創建shell腳本時,必須在第一行指定要使用的shell。格式為:
#!/bin/bash
通常在shell腳本中,#代表注釋行,即不被執行的行,而第一行“#!”則是表示用哪個shell來執行腳本。
實例:
讓我們來執行一下這個腳本:
上面的結果顯示無法找到此命令,其原因是shell對于命令的查找是通過PATH變量來進行的,如下圖所示,而新建的腳本的目錄并不在PATH變量中,解決方法:
1、將shell腳本的目錄添加到PATH變量中;
2、將腳本復制到PATH變量中存在的目錄中;
3、使用絕對或相對路徑來執行腳本。
我們使用第三個方法來執行腳本:
結果又出現了報錯,提示沒有權限;如果需要運行腳本的話,此腳本必須擁有執行權限,而從下圖可以看到,此文件沒有任何的執行權限:
添加執行權限后再次執行腳本:
上面的結果中顯示腳本成功運行。
二、變量
變量的類型包括:環境變量、本地變量(局部變量)、位置變量、特殊變量。
1、環境變量
可以使用set命令來查看當前活運的環境變量。
在腳本中引用環境變量時要在變量名稱前加一個“$”符號。
2、本地變量
即本地變量,其命名規則如下:
(1)只能包含字母語、數字和下劃線,并且不能以數字開頭
(2)不應該跟系統中已有的環境變量重名
(3)最好做到見名知義
上面的例子中將兩個變量分別賦值后進行計算,并輸出計算的結果。
3、位置變量
$#:#為數字,表示參數的位置;如:$1表示腳本執行時所帶的第一個參數。
如上例所示,腳本執行時帶了兩個參數9和10,分別對應$1和$2兩個變量,而$0對應的./test4,即命令本身。
shift n命令可以對參數進行位移,使后面的位置變量向前移動n個位置,如果不帶具體的數字默認為1。
4、特殊變量
$?:用于顯示命令執行后返回的狀態碼,命令執行成功則返回1,否則為其它值;
$#:命令執行時所帶的參數的個數;
$*:參數列表,將所有參數當做一個參數,而不是多個對象;
$@:參數列表,將所有參數當做多個獨立的對象。
上例中的結果兩個變量并沒有什么區別,得到的結果是相同的。
下面的例子可以看出兩個變量的不同之處:
三、測試腳本
腳本執行時出現錯誤時,可以使用bash命令協助進行錯誤排除,其命令格式如下:
bash [options] script
常用的選項:
-n:檢查腳本的語法錯誤,且只顯示語法出錯的內容;
-x:檢查腳本的語法錯誤,且顯示腳本執行的每一步內容。
原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/10658