歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell中的&&與||

在linux中前一個命令執行的結果正確,則Linux下面會回傳一個$?=0的值。那麼我們怎麼透過這個回傳值來判斷後續的指令是否要執行呢?這就得要由&&及||的幫忙了!

范例一:使用 ls 查閱目錄 /tmp/abc 是否存在,若存在則用 touch 建立
/tmp/abc/hehe 
[root@www ~]# ls /tmp/abc && touch /tmp/abc/hehe
ls: /tmp/abc: No such file or directory 
# ls說明找不到該目錄,但幵沒有 touch 癿錯誤,表示 touch 並沒有執行
 
[root@www ~]# mkdir /tmp/abc
[root@www ~]# ls /tmp/abc && touch /tmp/abc/hehe
[root@www ~]# ll /tmp/abc
-rw-r--r-- 1 root root 0 Feb  7 12:43 hehe

看到了吧?如果 /tmp/abc 不存在時,touch 就不會被執行,若 /tmp/abc 存在的話,那麼 touch 就會開始執行啰!

范例二:測試 /tmp/abc 是否存在,若不存在則建立,若存在不干事
[root@www ~]# rm -r /tmp/abc                <==先初除此目錄
[root@www ~]# ls /tmp/abc || mkdir /tmp/abc
ls: /tmp/abc: No such file or directory <==真的不存在喔!
[root@www ~]# ll /tmp/abc                 
total 0                                <==結果出現了!有進行 mkdir

如果我想要建立 /tmp/abc/hehe 這個檔案,但我並不知道 /tmp/abc 是否存在,那該如何是好

范例三:我不清楚 /tmp/abc 是否存在,但就是要建立 /tmp/abc/hehe 檔案
[root@www ~]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

范例三有幾種結果我們來分析一下:

(1)    若 /tmp/abc 不存在故回傳 $?≠0,則 (2)因為 || 遇到非為 0 的 $? 故開始 mkdir /tmp/abc,由於 mkdir /tmp/abc 會成功執行,所以回傳 $?=0 (3)因為 && 遇到 $?=0 故會執行 touch

(2)    若 /tmp/abc 存在故回傳 $?=0,則 (2)因為 || 遇到 0 癿 $? 不會執行,此時 $?=0 繼續向後傳,故 (3)因為 && 遇到$?=0 就開始建立 /tmp/abc/hehe 了!最終 /tmp/abc/hehe 被建立起來。

Copyright © Linux教程網 All Rights Reserved