進階bash編程指南(二)

來源:互聯網
上載者:User

內容約制:第五章 引用開始

1.echo $(ls -l)#輸出結果沒有換行

echo "$(ls -l)"#不會去掉分行符號

2.退出碼

(1)exit num(num必須是一個0-255範圍的十進位整數)

(2)如果一個指令碼以不帶參數的exit命令結束,指令碼的退出碼將是執行exit命令前的最後一個命令的退出碼

(3)沒有exit,exit 沒退出碼和exit $?三者時等價的

(4)當一個函數返回時,$?儲存了函數裡最後一個命令的退出碼,當一個指令碼結束時,儲存了指令碼的退出碼。

3.邏輯非(!)

! true ;echo $?   #result:1  注意!後面的空格

去掉空格後輸出true

4.

(1)一個if/then結構測試一系列命令的退出碼是否為0(0意味著命令執行成功),這裡跟C是不同的。

(2)if命令不僅能測試【】也可以測試任何命令。

(3)【和test同義字,內建shell,返回比較結果(0真,1假)

【【 】】擴充,是關鍵字   (())   let 

(4)test 內建shell,在bash指令碼中的test語句不必調用外部的/usr/bin/test的二進位檔案;同樣【也不必調用/usr/bin/【;其中/usr/bin/【是連結到/usr/bin/test的一個符號連結。

可以用type命令進行查看。

(5)【【】】結構比bash版本的【】更通用,它時從ksh88中引進的test命令的擴充。

i)【【 】】之間的所有字元都不會被檔案擴充或是標記分割,但是會有參數引用和命令替換。

ii)在【【】】測試結構比用【】更能防止指令碼裡的許多邏輯錯誤,比如說&&,||,< ,>操作符能在一個【【】】測試裡通過,但在【】結構會發生錯誤。

(6)(())結構擴充並計算一個算數運算式的值。一個非零值的運算式返回一個0或真作為退出碼,這和test即【】剛好相反。

5.檔案測試操作符

(1)-g 檔案或目錄的設定-ID(sgid)標記是否被設定

如果一個目錄的sgid標誌被設定,在這個目錄下建立的檔案都屬於擁有次目錄的使用者組,而不必時建立檔案的使用者所屬的組。這個特性對在一個工作群組裡的共用目錄很有好處。

(2)-u 檔案的設定-使用者-ID(suid)標誌是否被設定

一個root使用者擁有的二進位執行檔案如果設定了suid標誌,則普通使用者可以以root許可權運行。這對需要存取系統硬體的執行程式(pppd ,cdrecord)很有用。如果沒有設定suid位,則這些二進位執行程式不能有非root的普通使用者調用。用sudo應該也可以吧 

6.整數比較

i)-le,-ne,-lt,等在【】中使用,<,<=等在(())中使用。> ,<可以在【】中使用,但需要轉義。!=,=,==可以在【】中使用

使用的時候注意符號兩邊的空格

7.字串比較

  if [ -n "$string1" ]:字串不為null,為真

  if [ -z "$string2" ]:字串為null,為真

  【】中使用!=,=,==,其他的需要轉義

  當時用【【】】時則不用轉義

8.混合比較

(1)-a 邏輯與 -o 邏輯或

(2)if 【【 condition1 && condition2 】】等價於 if 【 “expr1‘ -a ”expr2“ 】,if [ $condition1 ]&&[ $condition2 ]

注意比較操作符&&和||不能用於【】中。

9.bash中在函數外可以使用函數中的局部變數。

10.

: $((n=$n+1))冒號是必須的,而且後面有空格。沒有:的話bash會把該句作為命令運行

等價於((n=n+1)),: $[n=$n+1],let "n++",((n++)),: $((n++)),: $[n++]

11.逗號操作符

連結兩個或更多的演算法操作。所有的操作都被求值(可能會有副作用),但值返回最後的一個操作的結構。

let "t1=((5+3,7-1,15-4))" #t1=11

12.數字常量

除非一個數字有特別的首碼或符號,否則shell指令碼把它當成十進位的數。一個首碼為0的數字時八進位。一個首碼為0x的數字是十六進位數

聯繫我們

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