[英]Bash equality not behaving as I expect it
我想檢查 bash 中的最后一個命令是否失敗。 我將此迷你腳本基於此
#!/bin/bash
mkdir nothere/cantcreate
echo $?
if [ $? -eq 0 ]; then
echo "command succeed"
else
echo "command failed"
fi
這將打印以下內容:
mkdir: 無法創建目錄 'nothere/cantcreate': 沒有這樣的文件或目錄
1
命令成功
我希望它打印command failed
,因為$?
是 1. 為什么等式不符合我的預期?
如評論部分所述,當您到達 if 子句$?
評估為echo $?
.
最直接和最簡單的方法是將命令本身放在 if 子句中:
#!/bin/bash
if mkdir nothere/cantcreate; then
echo "command succeed"
else
echo "command failed"
fi
echo $?
本身是成功打印失敗mkdir
的退出代碼的命令。 如果要捕獲mkdir
的退出代碼,則需要在命令調用后立即存儲它。
#!/bin/bash
mkdir nothere/cantcreate
RESULT=$?
echo $RESULT
if [ $RESULT -eq 0 ]; then
echo "command succeed"
else
echo "command failed"
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.