我试图创建一个脚本来告诉我bash命令是否成功。因此,我在每个命令之后都测试了变量$?
的值,变量$?
的值是一致的,但是后来我无法检查变量$?
中的假值
即。如果我运行cp命令
cp -av "a.." "b.."
echo "$?"
如果复制成功:$? = 0
否则:$? = 1
假设cp抛出错误,然后$? = 1
当我尝试执行if [ "$?" != 0 ]
时,脚本只会忽略该指令,这是我做错了。
我还尝试了if [ "$?" -eq 0 ]
,但没有运气。
答案 0 :(得分:0)
echo
本身会重置$?
的值,您需要在运行cp
之后立即检查其值(或至少将其保存)。
cp -av "a.." "b.."
cp_result=$?
if [ "$cp_result" != 0 ]; then
...
如果您只关心cp
是否成功,则可以直接使用cp
作为测试条件。
if cp -av "a.." "b.."; then
echo "cp succeeded"
else
echo "cp failed"
fi