Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何保存cd的返回值?_Bash_Shell - Fatal编程技术网

Bash 如何保存cd的返回值?

Bash 如何保存cd的返回值?,bash,shell,Bash,Shell,我有这个: cd $dir if[ $? -eq 0 ]; then ... else echo "The directory doesn't exist"; exit -1; fi 我想要的是,如果cd返回一个错误(在第1行),shell将不会显示该错误。我只想看到我写的信息。 我试着做: ret=$(cd $dir) 但这不起作用。如何执行此操作?重定向标准错误: cd $dir 2>/dev/null 如果目录确实存在,但脚本没有进入它的权限,那么您试图做的就是混淆用户。如果

我有这个:

cd $dir

if[ $? -eq 0 ]; then ...
else echo "The directory doesn't exist"; exit -1;
fi
我想要的是,如果cd返回一个错误(在第1行),shell将不会显示该错误。我只想看到我写的信息。 我试着做:

ret=$(cd $dir)

但这不起作用。如何执行此操作?

重定向标准错误:

cd $dir 2>/dev/null

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

cd $dir || exit 255 cd$dir | |退出255
在完全不知道发生了什么错误的情况下试图打印错误消息只会导致混乱。

如果提供了否决投票的原因,至少对我来说是有帮助的。谢谢。
$(…)
语法捕获命令的输出,而不是其状态。感谢您的澄清。实际上,您不想打印消息。您确实希望cd发出错误消息。错误可能不是目录不存在,在这种情况下,错误消息不正确。只需写:cd$dir | | exit-1。(或者只做set-e)
cd $dir 2>/dev/null || { echo "The directory doesn't exist"; exit -1; }
...
cd $dir || exit 255