在解答本章題目之前,先讓我們了解乙個概念:
return value !
jdb"id gy$a我們在shell下跑的每乙個 command 或 function ,在結束的時候都會傳回父程序乙個值,稱為 return value 。
:x9zjx x+w9}q
bsd愛好者樂園 ques9trm
return value 的作用,是用來判斷程序的退出狀態(exit status),只有兩種:
fq2a]`s8p~
* 0 的話為"真"( true )bsd愛好者樂園+m"u5wh3zu0glmd
* 非 0 的話為"假"( false )
bsd愛好者樂園 ozb;u3[3u
#o;qmp7x/aw zot舉個例子來說明好了:
,e7pv7_ m!?~_5n假設當前目錄內有乙份 my.file 的檔案,而 no.file 是不存在的:
bsd愛好者樂園/p7w2y/[4tw6t4tl
$ touch my.filebsd愛好者樂園j6c&_f v? g jjm
$ ls my.file
g%yg'`@!nomk$ echo $? # first echo
t p+/ lapb%l'z0bsd愛好者樂園pivo*?
$ ls no.filebsd愛好者樂園c.jw-r#t(h%dm1h.lbxl
bsd愛好者樂園 vko9p7v p
其次,bash 的 test 目前支援的測試對像只有三種:
r)d0t)s wr p bk}* string:字串,也就是純文字。
v1i%lk* [ -e "$a" ]:是關於檔案的測試,以測試 123 這份"檔案"是否存在。
-fl;i�]p2df
j:/ u3d8_t5}q&?~ s第三,當 expression 測試為"真"時,test 就送回 0 (true) 的 return value ,否則送出非 0 (false)。bsd愛好者樂園rj{ws~b pi
若在 expression 之前加上乙個 " ! "(感嘆號),則是當 expression 為"假時" 才送出 0 ,否則送出非 0 。
u(g-v h!d8b3d a/同時,test 也允許多重的覆合測試:
.ntzr.q5r* expression1 -a expression2 :當兩個 exrepssion 都為 true ,才送出 0 ,否則送出非 0 。bsd愛好者樂園(fyw5x@-ne]d
* expression1 -o expression2 :只需其中乙個 exrepssion 為 true ,就送出 0 ,只有兩者都為 false 才送出非 0 。
j&b1t
Shell十三問之十 與 差在哪
好不容易,進入兩位數的章節了.一路走來,很辛苦吧?也很快樂吧?在解答本章題目之前,先讓我們了解乙個概念 return value 我們在 shell 下跑的每乙個 command 或 function 在結束的時候都會傳回父行程乙個值,稱為 return value 在 shell command ...
SHELL十三問之七 與 差在哪?
先說一下,為何要用 或 好了。qw8l8 m 1 許多時候,我們在 shell 操作上,需要在一定條件下一次執行多個命令,也就是說,要麼不執行,要麼就全執行,而不是每次依序的判斷是否要執行下乙個命令。或是,需要從一些命令執行優先次順中得到豁免,如算術的 2 3 4 那樣.這時候,我們就可引入 命令群...
Shell 十三問整理
組成 literal meta 就是一些字母單詞,組成命令的 特殊保留字元,對於shell有特殊意義 重點meta有分command meta和shell meta 舉例awk 1.txt 這裡 會被解釋成shell meta。awk 1.txt 中的 被解釋成command meta 常見meta...