詳細介紹Linux shell指令碼基礎學習(四)

來源:互聯網
上載者:User

上一篇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

這將輸出:

*.jpg

$SHELL

Linux shell指令碼基礎這裡就到這裡,控制流程程還有一點here document的內容下次再分析。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.