如何保存cd的返回值?

时间:2011-12-31 19:18:31

标签: bash shell

我有这个:

cd $dir

if[ $? -eq 0 ]; then ...
else echo "The directory doesn't exist"; exit -1;
fi

我想要的是如果cd返回错误(在第1行),shell将不会显示错误。我只希望看到我写的信息。 我试着这样做:

ret=$(cd $dir)

但这不起作用。我该怎么办?

4 个答案:

答案 0 :(得分:4)

重定向标准错误:

cd $dir 2>/dev/null

答案 1 :(得分:4)

if cd $dir 2> /dev/null; then ...; else echo "The directory doesn't exist"; exit -1; fi

答案 2 :(得分:1)

cd $dir 2>/dev/null || { echo "The directory doesn't exist"; exit -1; }
...

答案 3 :(得分:1)

如果目录确实存在,但脚本没有输入权限,那么您尝试执行的操作会使用户感到困惑。如果您的意图是混淆用户,请继续使用提供的其他答案。但你真正想做的是让cd发出错误信息,然后写:

cd $dir || exit 255

当您完全不知道发生了什么错误时,尝试打印错误消息会导致混淆。