SHELL十三問之十 與 差在哪?

2021-05-06 07:46:36 字數 1339 閱讀 6887

在解答本章題目之前,先讓我們了解乙個概念:

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...