shell中命令間的邏輯關係

來源:互聯網
上載者:User

標籤: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中命令間的邏輯關係

相關文章

聯繫我們

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