標籤:shell 邏輯 與或
在shell中命令執行成功傳回值為0,不成功傳回值為非0
邏輯與:
shell中0為真,非0為假
第一個條件為真時,第二條件必須判斷;
第一個條件為假時,第二條件不再判斷,最終結果為假;
當第一個命令執行成功繼續執行第二個命令,最終結果由第二個命令執行結果決定。
當第一個命令執行失敗第二個命令不再執行,最終結果為失敗。
理解為乘法運算(0為假1為真)
1*1=1 1*0=0 0*1=0 0*0=0
例:
1、user1存在,前一條命令執行成功,第二條命令執行成功,最終結果為成功(1*1=1)
[[email protected] shell]# id user1uid=501(user1) gid=501(user1) groups=501(user1)[[email protected] shell]# echo $?0[[email protected] shell]# id user1 &> /dev/null && echo Hello user1Hello user1[[email protected] shell]# echo $?0
2、user1不存在,前一條命令執行失敗,後一條命令不再執行,最終結果為失敗(0*?=0)
[[email protected] shell]# id user1id: user1: No such user[[email protected] shell]# echo $?1[[email protected] shell]# id user1 &>/dev/null && echo Hello user1[[email protected] shell]# echo $?1
3、user1 存在 user2不存在 前一條命令執行成功,後一條命令執行失敗,命令最終執行失敗(1*0=0)
[[email protected] shell]# id user1uid=501(user1) gid=501(user1) groups=501(user1)[[email protected] shell]# echo $?0[[email protected] shell]# id user2id: user2: No such user[[email protected] shell]# echo $?1[[email protected] shell]# id user1 &>/dev/null && id user2id: user2: No such user[[email protected] shell]# echo $?1
邏輯或:
shell中0為真,非0為假
第一個條件為真時,第二條件不再判斷,最終結果為真;
第一個條件為假時,第二條件必須判斷。
當第一個命令執行成功第二個命令不再執行,最終結果為成功。
當第一個命令執行失敗繼續執行第二個命令,最終結果由第二個命令的執行結果決定。
理解為加法運算(0為假1為真)
0+0=0 1+0=1 1+1=1 0+1=1
1、user1 存在 前一條命令成功 後一條不再執行最終結果為成功(1+?=1)
[[email protected] shell]# id user1uid=501(user1) gid=501(user1) groups=501(user1)[[email protected] shell]# echo $?0[[email protected] shell]# id user1 &>/dev/null || useradd user1[[email protected] shell]# echo $?0
2、user1 不存在 前一條命令執行失敗,執行第二條命令成功最終結果成功(0+1=1)
[[email protected] shell]# id user1id: user1: No such user[[email protected] shell]# echo $?1[[email protected] shell]# id user1 &>/dev/null || useradd user1[[email protected] shell]# echo $?0[[email protected] shell]# id user1uid=501(user1) gid=501(user1) groups=501(user1)
3、user1不存在前一條命令執行失敗;user2不存在後一條命令執行失敗;最終結果失敗(0+0=0)
[[email protected] shell]# id user1id: user1: No such user[[email protected] shell]# echo $?1[[email protected] shell]# id user2id: user2: No such user[[email protected] shell]# echo $?1[[email protected] shell]# id user1 &>/dev/null || id user2 &>/dev/null[[email protected] shell]# echo $?1
執行結果可以使用 ! 來取反使真變假、假變真
[[email protected] shell]# id user1id: user1: No such user[[email protected] shell]# echo $?1[[email protected] shell]# ! id user1id: user1: No such user[[email protected] shell]# echo $?0[[email protected] shell]# id user1uid=501(user1) gid=501(user1) groups=501(user1)[[email protected] shell]# echo $?0[[email protected] shell]# ! id user1uid=501(user1) gid=501(user1) groups=501(user1)[[email protected] shell]# echo $?1[[email protected] shell]# ! id user1 &>/dev/null && useradd user1[[email protected] shell]# echo $?1
複合執行個體
如果user1不存在添加user1,如果存在輸出Hello user1
[[email protected] shell]# id user1id: user1: No such user[[email protected] shell]# id user1 &>/dev/null && echo "Hello user1" || useradd user1[[email protected] shell]# echo $?0[[email protected] shell]# id user1uid=501(user1) gid=501(user1) groups=501(user1)[[email protected] shell]# id user1 &>/dev/null && echo "Hello user1" || useradd user1Hello user1
本文出自 “Greg的繁華” 部落格,請務必保留此出處http://gregdefanhua.blog.51cto.com/7580626/1563920
shell中命令間的邏輯關係