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

來源:互聯網
上載者:User

Linux shell指令碼基礎已經被分成好幾個部分了,這裡對控制流程程的內容也就馬上講完了,這是最後一部分關於here document,這裡舉例稍微有點複雜,我們慢慢來分析這個複雜Linux shell指令碼。

6. Here documents

當要將幾行文字傳遞給一個命令時,here documents(譯者註:目前還沒有見到過對該詞適合的翻譯)一種不錯的方法。對每個指令碼寫一段協助性的文字是很有用的,此時如果我們四有那個 here documents就不必用echo函數一行行輸出。 一個 "Here document" 以 << 開頭,後面接上一個字串,這個字串還必須出現在here document的末尾。下面是一個例子,在該例子中,我們對多個檔案進行重新命名,並且使用here documents列印協助:

#!/bin/sh

# we have less than 3 arguments. Print the help text:

if [ $# -lt 3 ] ; then

cat <

ren -- renames a number of files using sed regular expressions

USAGE: ren 'regexp' 'replacement' files...

EXAMPLE: rename all *.HTM files in *.html:

ren 'HTM$' 'html' *.HTM

HELP

exit 0

fi

OLD="$1"

NEW="$2"

# The shift command removes one argument from the list of

# command line arguments.

shift

shift

# $* contains now all the files:

for file in $*; do

if [ -f "$file" ] ; then

newfile=`echo "$file" | sed "s/${OLD}/${NEW}/g"`

if [ -f "$newfile" ]; then

echo "ERROR: $newfile exists already"

else

echo "renaming $file to $newfile ..."

mv "$file" "$newfile"

fi

fi

done

這是一個複雜一些的例子。讓我們詳細討論一下。第一個if運算式判斷輸入命令列參數是否小於3個 (特殊變數$# 表示包含參數的個數) 。如果輸入參數小於3個,則將協助文字傳遞給cat命令,然後由cat命令將其列印在螢幕上。列印協助文字後程式退出。如果輸入參數等於或大於3個,我們 就將第一個參數賦值給變數OLD,第二個參數賦值給變數NEW。下一步,我們使用shift命令將第一個和第二個參數從參數列表中刪除,這樣原來的第三個 參數就成為參數列表$*的第一個參數。然後我們開始迴圈,命令列參數列表被一個接一個地被賦值給變數$file。接著我們判斷該檔案是否存在,如果存在則 通過sed命令搜尋和替換來產生新的檔案名稱。然後將反短斜線內命令結果賦值給newfile。這樣我們就達到了我們的目的:得到了舊檔案名稱和新檔案名稱。然 後使用mv命令進行重新命名。這樣就明了這個複雜的Linux shell指令碼了吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.