KSH:将stderr和stdout管道化为变量

时间:2014-07-08 08:45:25

标签: shell unix ksh

我正在尝试将stderr和stdout打印成一个变量 我想检查是否存在rtest并捕获输出,因此如果找不到脚本,我可以退出脚本。

checkdate=`rtest 2&>1`

问题是,如果我运行我的脚本,stderr仍然会在终端上打印出来。

./script.ksh[26]: rtest:  not found

1 个答案:

答案 0 :(得分:1)

错误消息显示在PATH中找不到脚本/可执行文件rtest

rtest提供完整路径(或相对),然后运行。请注意,即使rtest位于当前目录中,您仍然会收到相同的错误(除非您的路径中包含当前目录)。

执行:

checkdate=$(/path/to/rtest 2&>1)

checkdate=$(./rtest 2&>1) # if rtest is in current directory.

要检查rtest是否在PATH中而不执行它,可以使用which命令:

{ which rtest 2>&1 >/dev/null; } 2>&1 >/dev/null || { echo "rtest not found"; exit 1; }