首頁  >  文章  >  後端開發  >  詳細介紹Linux shell腳本基礎學習(四)

詳細介紹Linux shell腳本基礎學習(四)

黄舟
黄舟原創
2017-02-04 09:21:041662瀏覽

上一篇Linux shell腳本基礎學習中我們講了Linux shell腳本中控制流程的if 、select、case ,這裡接著介紹Linux shell腳本控制流程的loop和引號,控制流程這部分內容比較多,還有一部分內容是關於here document的。
4.loop
loop表達式:

while ...; do
....
done

while-loop 將運行直到表達式測試為真。 will run while the expression that we test for is true.
關鍵字"break" 用來跳出迴圈。而關鍵字”continue」用來不執行剩下的部分而直接跳到下一個迴圈。
for-loop表達式查看一個字串列表(字串用空格分隔) 然後將其賦給一個變數:

for var in ....; do
....
done

在下面的例子中,將分別打印ABC到屏幕上:

#!/bin/sh
for var in A B C ; do
echo "var is $var"
done

下面是一個更有用的腳本showrpm,其功能是列印一些RPM套件的統計資料:

#!/bin/sh
# list a content summary of a number of RPM packages
# USAGE: showrpm rpmfile1 rpmfile2 ...
# EXAMPLE: showrpm /cdrom/RedHat/RPMS/*.rpm
for rpmpackage in $*; do
if [ -r "$rpmpackage" ];then
echo "=============== $rpmpackage =============="
rpm -qi -p $rpmpackage
else
echo "ERROR: cannot read file $rpmpackage"
fi
done

這裡出現了第二個特殊的變數$*,該變數包含了所有輸入的命令列參數值。
如果您執行showrpm openssh.rpm w3m.rpm webgrep.rpm
此時$* 包含了3 個字串,即openssh.rpm, w3m.rpm and webgrep.rpm.
5. 引號
在向程式傳遞任何參數之前,程式會擴展通配符和變數。這裡所謂擴充的意思是程式會把通配符(例如*)替換成適當的檔名,它變數替換成變數值。為了防 止程式作這種替換,您可以使用引號:讓我們來看一個例子,假設在當前目錄下有一些文件,兩個jpg文件, mail.jpg 和tux.jpg。
1.2 編譯SHELL腳本
#ch#!/bin/sh mod +x filename
cho *.jpg ∪緩螅梢醞釀ü淙耄?./filename 來執行您的腳本。
這將列印出"mail.jpg tux.jpg"的結果。
引號 (單引號和雙引號) 將防止這種通配符擴展:

#!/bin/sh
echo "*.jpg"
echo '*.jpg'

這將打印"*.jpg" 兩次。
單引號更嚴格一些。它可以防止任何變數擴展。雙引號可以防止通配符擴展但允許變數擴展。

#!/bin/sh
echo $SHELL
echo "$SHELL"
echo '$SHELL'

運行結果為:

/bin/bash
/bin/bash
$SHELL

最後,還有一種防止這種擴展的方法,那就是使用轉義字符―反斜桿:

echo *.jpg
echo $SHELL

這將輸出:

腳本基礎這裡就到這裡,控制流程還有一點here document的內容下次再分析。


以上就是詳細介紹Linux shell腳本基礎學習(四)的內容,更多相關內容請關注PHP中文網(www.php.cn)!


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn