touch hellloworld.sh
或vi helloworld.sh
chmod +x helloworld.sh
命令 | 註釋 |
---|---|
[root@localhost ~]# ./helloworld.sh | 指令碼檔案路徑(絕對路徑與相對路徑) ===>需要可執行許可權 |
[root@localhost ~]# sh helloworld.sh | sh 指令碼檔案路徑 ===>可以不需要執行許可權 |
[root@localhost ~]# source helloworld.sh | source 指令碼檔案路徑 ===>本身的路徑會變化 |
[root@localhost ~]# . helloworld.sh | 通過點號來載入指令碼 |
管道操作爲不同命令之間的協同工作提供了一種機制 機製,位於管道符號"|"左側的命令輸出結果作爲右側命令的輸入(處理物件),同一行命令中可以用多個管道。
cmd 命令 1 | cmd 命令 2 | cmd 命令 n
例如:
free -m | grep 「Mem」 | awk ‘{print $6}’
型別 | 操作符 | 用途 |
---|---|---|
重定向輸入 | < | 從指定的檔案讀取數據,而不是從鍵盤輸入 |
重定向輸出 | > | 將輸出結果儲存到指定的檔案(覆蓋原有內容) |
重定向輸出 | >> | 將輸出結果追加到指定的檔案尾部 |
標準錯誤輸出 | 2> | 將錯誤資訊儲存到指定的檔案(覆蓋原有內容) |
標準錯誤輸出 | 2>> | 將錯誤資訊追加到指定的檔案尾部 |
混合輸出 | &> | 將標準輸出、標準錯誤內容儲存到指定的檔案(覆蓋原有內容) |
混合輸出 | &>> | 將標準輸出、標準錯誤內容追加到指定的檔案尾部 |
自定義變數:由使用者自己定義、修改和使用
特殊變數:環境變數(USER HOME LANG PATH)、只讀變數、位置變數($1,$2,$3……)、預定義變數
預定義變數:
變數 | 註釋 |
---|---|
$# | 命令列中位置變數的個數 |
$* | 所有位置變數的內容 |
$? | 上一條命令執行後返回的狀態,返回狀態值爲0表示執行正常,非0值表示異常或出錯 |
$0 | 當前執行的進程/程式名(即返回當前程式) |
主要用來界定字串,當要賦值的內容中包含空格時必須用雙引號括起來,其他情況則可以省略。
在雙引號範圍內可以使用"$"符號參照其他變數的值。
在單引號的範圍內,無法參照其他變數的值,所有字元均作爲普通字元看待。
反撇號內必須是能夠執行的命令列,即把反撇號裏面的內容作爲命令輸入終端,再把輸出結果作爲一條新的命令輸入終端。
圖中「expr」表示計算,計算「12+13」的結果,得出「25」,把25作爲一條命令輸入,結果找不到命令……
注意:
反撇號難以多級巢狀,可使用"$()"來代替。
例如:
read命令用來提示使用者輸入資訊,實現簡單的互動過程。執行時從鍵盤讀入一行內容。以空格作爲分隔符,把讀入的各欄位依次賦值給指定的變數。
read命令可以結合"-p"和"-t"選項來設定提示資訊與等待時間(預設爲秒)
例如:
再來一次
預設情況下,新定義的變數是區域性變數,只在當前環境下有效。當輸入命令「bash」進入子shell環境時,區域性變數將無法使用。
可以通過命令「export」將指定變數導出爲「全域性變數」,可以同時操作多個變數,變數名之間以空格分隔。