shell程式設計總結

2021-08-14 16:28:38 字數 1832 閱讀 2076

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

...) do something here ;;

esac

只要測試表示式條件為真,則while迴圈將一直執行。關鍵字"break"用來跳出迴圈,而關鍵字」continue」則可以跳過乙個迴圈的餘下部分,直接跳到下一次迴圈中。

for迴圈會檢視乙個字串行表(字串用空格分隔),並將其賦給乙個變數:

for var in ....; do

....

done

下面的示例會把a b c分別列印到螢幕上:

#!/bin/sh

for 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...