无法在Mac bash中检查错误值

时间:2019-03-18 14:41:41

标签: bash

我试图创建一个脚本来告诉我bash命令是否成功。因此,我在每个命令之后都测试了变量$?的值,变量$?的值是一致的,但是后来我无法检查变量$?中的假值

即。如果我运行cp命令

cp -av "a.." "b.."
echo "$?"

如果复制成功:$? = 0 否则:$? = 1

假设cp抛出错误,然后$? = 1

当我尝试执行if [ "$?" != 0 ]时,脚本只会忽略该指令,这是我做错了。

我还尝试了if [ "$?" -eq 0 ],但没有运气。

1 个答案:

答案 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