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)

[root@localhost shell]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@localhost shell]# echo $?
0
[root@localhost shell]# id user1 &> /dev/null && echo Hello user1
Hello user1
[root@localhost shell]# echo $?
0

2、user1不存在,前一條命令執行失敗,後一條命令不再執行,最終結果爲失敗(0*?=0)

[root@localhost shell]# id user1
id: user1: No such user
[root@localhost shell]# echo $?
1
[root@localhost shell]# id user1 &>/dev/null && echo Hello user1
[root@localhost shell]# echo $?
1

3、user1 存在 user2不存在 前一條命令執行成功,後一條命令執行失敗,命令最終執行失敗(1*0=0)

[root@localhost shell]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@localhost shell]# echo $?
0
[root@localhost shell]# id user2
id: user2: No such user
[root@localhost shell]# echo $?
1
[root@localhost shell]# id user1 &>/dev/null && id user2
id: user2: No such user
[root@localhost shell]# echo $?
1

邏輯或:

shell中0爲真,非0爲假

第一個條件爲真時,第二條件不再判斷,最終結果爲真;

第一個條件爲假時,第二條件必須判斷。

當第一個命令執行成功第二個命令不再執行,最終結果爲成功。

當第一個命令執行失敗繼續執行第二個命令,最終結果由第二個命令的執行結果決定。

理解爲加法運算(0爲假1爲真)

0+0=0     1+0=1    1+1=1    0+1=1

1、user1 存在 前一條命令成功 後一條不再執行最終結果爲成功(1+?=1)

[root@localhost shell]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@localhost shell]# echo $?
0
[root@localhost shell]# id user1 &>/dev/null || useradd user1
[root@localhost shell]# echo $?
0

2、user1 不存在 前一條命令執行失敗,執行第二條命令成功最終結果成功(0+1=1)

[root@localhost shell]# id user1
id: user1: No such user
[root@localhost shell]# echo $?
1
[root@localhost shell]# id user1 &>/dev/null || useradd user1
[root@localhost shell]# echo $?
0
[root@localhost shell]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)

3、user1不存在前一條命令執行失敗;user2不存在後一條命令執行失敗;最終結果失敗(0+0=0)

[root@localhost shell]# id user1
id: user1: No such user
[root@localhost shell]# echo $?
1
[root@localhost shell]# id user2
id: user2: No such user
[root@localhost shell]# echo $?
1
[root@localhost shell]# id user1 &>/dev/null || id user2 &>/dev/null
[root@localhost shell]# echo $?
1



執行結果可以使用   !    來取反使真變假、假變真

[root@localhost shell]# id user1
id: user1: No such user
[root@localhost shell]# echo $?
1
[root@localhost shell]# ! id user1
id: user1: No such user
[root@localhost shell]# echo $?
0

[root@localhost shell]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@localhost shell]# echo $?
0
[root@localhost shell]# ! id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@localhost shell]# echo $?
1
[root@localhost shell]# ! id user1 &>/dev/null && useradd user1
[root@localhost shell]# echo $?
1


複合實例

如果user1不存在添加user1,如果存在輸出Hello user1

[root@localhost shell]# id user1
id: user1: No such user
[root@localhost shell]# id user1 &>/dev/null && echo "Hello user1" || useradd user1
[root@localhost shell]# echo $?
0
[root@localhost shell]# id user1
uid=501(user1) gid=501(user1) groups=501(user1)
[root@localhost shell]# id user1 &>/dev/null && echo "Hello user1" || useradd user1
Hello user1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章