国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

對shell中的與(&&)和或(||)的理解

2024-06-28 13:28:22
字體:
來源:轉載
供稿:網友
對shell中的與(&&)和或(||)的理解

先說明一下:

如果第一個命令執行成功,與操作符 (&&)才會執行第二個命令

如果第一個命令執行失敗,或操作符 (||)才會執行第二個命令

可以分析一下下面的命令的輸出:

#!/bin/shecho "1" &&  echo "2" ||  echo "3" && echo "4" || echo "5" || echo "6" && echo "7" && echo "8" || echo "9" 

下面是輸出:

pengdl@debian:~/test/shell$ ./sh5.sh 12478

分析:

echo "1" 執行成功,所以執行echo "2"

echo "2" 執行成功,不執行 echo "3"

既然沒有執行echo "3",可以看做不存在 “ " || echo "3" ”,echo "2"后緊接“ && echo "4" ”

echo "4" 執行成功,不執行echo "5"

既然沒有執行echo "5",可以看做不存在 “ " || echo "5" ”,echo "4"后緊接“ || echo "6" ”

echo "4" 執行成功,不執行echo "6"

既然沒有執行echo "6",可以看做不存在 “ " || echo "6" ”,echo "4"后緊接“ && echo "7" ”

echo "7" 執行成功,執行echo "8"

echo "8" 執行成功,不執行echo "9"

所以最終變成了:

echo "1" &&  echo "2"  && echo "4"  && echo "7" && echo "8"

改變一下,比如當前目錄沒存在目錄p,不存在文件7

#!/bin/shcd p  &&  echo "2" ||  echo "3" && echo "4" || echo "5" || echo "6" && ls  "7" && echo "8" || echo "9" 

下面是輸出:

pengdl@debian:~/test/shell$ ./sh6.sh ./sh6.sh: line 4: cd: p: No such file or directory34ls: cannot access 7: No such file or directory9

如果想改變執行邏輯,可以加優先操作符()

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

在上面的偽代碼中,如果Command_x1執行失敗,Command_x2不會執行,但是Command_x3會繼續執行,Command_x4會依賴于Command_x3的退出狀態。

(Command_x1 &&Command_x2)

它的執行成功與否: 如果Command_x1執行成功,執行Command_x2 ,如果Command_x2執行成功,那么整個()執行成功,如果Command_x2執行失敗,整個()執行失敗。如果Command_x2不執行,整個()的執行成功與否取決于Command_x1。

可以分析一下下面的例子:

例一

#!/bin/shcd p && (echo "1" || echo "2") || (echo "3" && echo "5") && (ls 7 || echo "8" || (echo "9" && echo "0"))

下面是輸出:

./sh8.sh: line 3: cd: p: No such file or directory35ls: cannot access 7: No such file or directory8

例二

#!/bin/shcd p && (echo "1" || echo "2") || (echo "3" && cd p) && (ls 7 || echo "8" || (echo "9" && echo "0"))

下面是輸出:

./sh7.sh: line 3: cd: p: No such file or directory3./sh7.sh: line 3: cd: p: No such file or directory

例三:

#!/bin/bashif  ls ./iii then    echo "1"elif echo "2" &&  ls ./ithen    echo "3"else    echo "4"fi

下面是輸出:

pengdl@debian:~/test/shell$ ./sh8.sh ls: cannot access ./iii: No such file or directory2ls: cannot access ./i: No such file or directory4


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈溪市| 陆川县| 保山市| 湘潭市| 阳朔县| 华安县| 潮安县| 开鲁县| 马关县| 唐海县| 庆阳市| 休宁县| 沁阳市| 定陶县| 塔城市| 泰兴市| 枣强县| 家居| 江源县| 阳谷县| 富川| 大连市| 会宁县| 馆陶县| 巫溪县| 彰武县| 泗阳县| 兴文县| 禹城市| 嵊泗县| 海兴县| 梁山县| 马鞍山市| 布尔津县| 加查县| 潜江市| 彭泽县| 和政县| 萍乡市| 琼海市| 五峰|