shell程式設計中,使用變數無需事先宣告,同時變數名的命名須遵循如下規則:
首個字元必須為字母(a-z,a-z)
中間不能有空格,可以使用下劃線(_)
不能使用標點符號
不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)
需要給變數賦值時,可以這麼寫:
變數名=值要取用乙個變數的值,只需在變數名前面加乙個$ ( 注意: 給變數賦值的時候,不能在"="兩邊留空格 )
#!/bin/sh# 對變數賦值:
a="hello world" #等號兩邊均不能有空格存在
# 列印變數a的值:
echo "a is:" $a
shell指令碼中有許多變數是系統自動設定的,我們將在用到這些變數時再作說明。除了只在指令碼內有效的普通shell變數外,還有環境變數,即那些由export關鍵字處理過的變數。本文不討論環境變數,因為它們一般只在登入指令碼中用到。
if 語句
"if"表示式如果條件為真,則執行then後的部分:
if ....; then大多數情況下,可以使用測試命令來對條件進行測試,比如可以比較字串、判斷檔案是否存在及是否可讀等等……通常用" [ ] "來表示條件測試,注意這裡的空格很重要,要確保方括號前後的空格。....
elif ....; then
....
else
....
fi
[ -f "somefile" ] :判斷是否是乙個檔案
[ -x "/bin/ls" ] :判斷/bin/ls是否存在並有可執行許可權
[ -n "$var" ] :判斷$var變數是否有值
[ "$a" = "$b" ] :判斷$a和$b是否相等
變數$shell包含有登入shell的名稱,我們拿它和/bin/bash進行比較以判斷當前使用的shell是否為bash。
這裡的 && 就是乙個快捷操作符,如果左邊的表示式為真則執行右邊的語句,你也可以把它看作邏輯運算裡的與操作。上述指令碼表示如果/etc/shadow檔案存在,則列印」this computer uses shadow passwords」。同樣shell程式設計中還可以用或操作
該指令碼首先判斷mailfolder是否可讀,如果可讀則列印該檔案中的"from" 一行。如果不可讀則或操作生效,列印錯誤資訊後指令碼退出。需要注意的是,這裡我們必須使用如下兩個命令:
-列印錯誤資訊
-退出程式
case表示式可以用來匹配乙個給定的字串,而不是數字(可別和c語言裡的switch...case混淆)。
case ... in只要測試表示式條件為真,則while迴圈將一直執行。關鍵字"break"用來跳出迴圈,而關鍵字」continue」則可以跳過乙個迴圈的餘下部分,直接跳到下一次迴圈中。...) do something here ;;
esac
for迴圈會檢視乙個字串行表(字串用空格分隔),並將其賦給乙個變數:
for var in ....; do下面的示例會把a b c分別列印到螢幕上:....
done
#!/bin/shfor var in a b c ; do
echo "var is $var"
done
這裡出現了第二個特殊變數$*,該變數包含有輸入的所有命令列引數值。如果你執行showrpm openssh.rpm w3m.rpm webgrep.rpm,那麼 $* 就包含有 3 個字串,即openssh.rpm, w3m.rpm和 webgrep.rpm。
shell程式設計總結
一 簡單shell程式示例 在乙個檔案中輸入,假設檔名為ex1 cat ex1 date pwd執行此程式時,輸入的命令則會實現 出現日期以及當前的路徑 二 建立shell指令碼 建立乙個shell指令碼可以利用編輯器vi進行 三 編寫內容 例如 echo hello word 但如果想要執行出來則...
shell程式設計總結
shell程式設計 shell常用萬用字元 匹配0個或多個字元 匹配任意乙個字元 list 匹配list中的任意單一字元 list 匹配出list中的任意單一字元以外的字元 c1 c2 匹配c1 c2中的任意單一字元 string1,string2,匹配string1,string2 或更多 其一字...
shell程式設計總結
一 shell的特點 一種高階程式語言,有變數 關鍵字 條件控制語句,如if case while for這些語句。有自己的語法結構。二 1 檢視系統使用的shell echo shell 2 檢視shell的位置 cd bin 三 執行shell指令碼的方法 1 輸入定向到shell指令碼 bas...