進階BASH 編程 筆記(一)BASH 入門

來源:互聯網
上載者:User

 最近看進階BASH編程一書,說以記下些覺得有用的東西。

 

1. 指令碼中的“#!”字元,這兩個字元其實是兩個位元組的魔法字元,後面接路徑名,指定用來解釋指令碼的程式。

    例如:

    #!/bin/bash

    #!/bin/ksh

當我們的指令碼中的第一行包含了以上設定後,只需要給指令碼加上可執行許可權:chmod +rx shellname 或 chmod 555 shellname。我們就可以通過直接執行檔案名稱來執行指令碼。而不用像這樣調用:sh shellname 或 bash shellname 等等。

 

當指令碼中包含多行的#!字元時,第一個被調用的命令直譯器程式將視其它的#開頭的行為注釋行。

 

還可以藉助#!玩些小技巧:

自刪除指令碼:

#!/bin/rm

 

echo "remove me" #此指令碼將什麼也不發生,除了刪除它自己。

 

在README檔案的第一行加入:

#!/bin/more

並且把README檔案屬性改為可執行,你會發現它呈現了README的內容。

 

2. 特殊字元

 

# --此字元用來進行注釋,可以出現在指令碼命令的 空格後: echo "hello,world" #這裡是注釋

      但是當此字元被轉義時將失去注釋功能: echo "hello, # world" #hello與world之間的#將被列印

      echo hello /# world #這裡的#被斜杠/轉義,所以失去注釋功能被列印。

;  --此為命令分隔字元,可以使指令碼中一行執行多個命令: echo "hello,world" ; echo "hello2,world" ;

;; --此為case選項的終止符:

case $var<br /> "1") echo "var = 1" ;;<br /> "2") echo "var = 2" ;;<br />esac

.  --此命令等價於source命令,用系統內建;

     當.作為檔案名稱的開頭時,此檔案將被隱藏,使用ls -a才可顯示出來;

     當.作為檔案夾名時,它表示當前檔案夾;

     當.作為字元匹配時,它用來匹配任何單個字元;

()與{}的區別;這兩個符號都可以定義一個代碼塊,但是()中定義的代碼塊將在一個新shell中運行,{}中的代碼塊不能在新shell中運行,{}中的代碼塊像指令碼中的函數,與函數不同的是,函數中的局部變數指令碼中的其他程式不能使用,但是{}中的局部變數可以。

 

指令碼中實現在後台運行一個迴圈:

#!/bin/bash</p><p>for i in 1 2 3 4 5 6<br />do<br />echo $i<br />done& #這裡在後台運行此迴圈</p><p>for i in 11 22 33 44 55 66<br />do<br />echo $i<br />done

-  斷橫線的應用:用於重新導向stdout或stdin.

從一個目錄移動整個分類樹到另一個目錄:

(cd /test1 && tar cf - .) | ( cd /test2 && tar xpvf -)

cd /test1 #進入test1目錄

&& #如果上面執行成功則繼續後面的命令

tar cf - .  # 'c'建立一個新文檔,'f'後面跟'-'指定目錄檔案作為stdout,'-'後面的'f'(file)選項指明作為stdout的目標檔案,並在目前的目錄'.'執行。

tar xpvf -  # 'x'解檔,'p'保證所有權和檔案屬性,'v'發完整訊息到stdout,'f'後邊跟'-',從stdin 讀取資料。

 

 

聯繫我們

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