[問題] -d "dir_path" return 值問題

看板Linux作者 (ilcic)時間8年前 (2015/07/28 21:43), 編輯推噓3(3011)
留言14則, 6人參與, 最新討論串1/1
Dear all, 當我們要知道一個資料夾存不存在時, 假設資料夾為 "/var/run/test" 我們通常會用 [ -d "/var/run/test" ] 來問, 當資料夾存在時, if [ -d "/var/run/test" ]; then echo "exit"; fi; 會印出 exit 字串, 但想請問為什麼 /root> [ -d "/var/run/test" ] /root> echo $? 0 用 echo $? 拿 return 值會拿到 0 呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.177.224.74 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1438091013.A.A1A.html

07/28 22:01, , 2F
阿... 我搞錯你想問的了 抱歉
07/28 22:01, 2F

07/28 22:01, , 3F
shell exit status 0就是true,非0是false或error
07/28 22:01, 3F

07/28 22:11, , 5F
http://goo.gl/yIvzmR 看這篇跟上一篇
07/28 22:11, 5F

07/28 22:11, , 6F
(我也有點驚訝會相反XD)
07/28 22:11, 6F

07/28 22:36, , 7F
exit code通常都是非0代表error啊 可以順便代表errno
07/28 22:36, 7F

07/28 22:37, , 8F
畢竟通常正確就正確 錯誤倒是狀況很多
07/28 22:37, 8F

07/29 09:41, , 9F
[ ] 是 test(1), 看成是 test 的 exit code 就容易懂了
07/29 09:41, 9F

07/29 09:41, , 10F
man test
07/29 09:41, 10F

07/29 09:47, , 11F
而 bash 的 if list 是 list 的 exit code 為 0 時才成立
07/29 09:47, 11F

07/30 09:30, , 12F
[ -d "/var/run/test" ] && echo "yes" || echo "no"
07/30 09:30, 12F

07/30 22:38, , 13F
[ 才是test,]什麼都不是
07/30 22:38, 13F

07/30 22:52, , 14F
[才是test沒錯 但]是[結尾必要參數
07/30 22:52, 14F
文章代碼(AID): #1LjuS5eQ (Linux)