我正在尝试将stderr和stdout打印成一个变量 我想检查是否存在rtest并捕获输出,因此如果找不到脚本,我可以退出脚本。
checkdate=`rtest 2&>1`
问题是,如果我运行我的脚本,stderr仍然会在终端上打印出来。
./script.ksh[26]: rtest: not found
答案 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; }