在cli
我跑步
没有错误
cmd=$(uname -a) | awk '{print $1}'
echo $?
0
有错误
cmd=$(uname + -a) | awk '{print $1}'
echo $?
0
由于使用|
,我无法保留命令1的返回错误代码,我使用fd
作为可能的解决方案,但没有效果
可能的解决方案
cmd=$(uname + -a) 3>&2| awk '{print $1}' 2>&3
-bash: 3: Bad file descriptoruname: extra operand ‘+’
已解决
cmd=$(uname -a | awk '{print $1}' 2>&1)
echo $?
值不为零。
谢谢大家
答案 0 :(得分:1)
我怀疑这就是您真正需要的:
cmd=$(uname -a | awk '{print $1; f=1} END{exit !f}')
echo "$?"
如果uname产生任何输出并且awk成功读取/打印它,它将以状态0退出,否则返回1。
看:
$ cmd=$(uname -a | awk '{print $1; f=1} END{exit !f}')
$ echo "$?"
0
$ cmd=$(uname + -a | awk '{print $1; f=1} END{exit !f}')
uname: extra operand ‘+’
Try 'uname --help' for more information.
$ echo "$?"
1