Bash:最后的Returncode填充变量
Bash: Last Returncode filling variables
在 bash 我可以用 $? 得到最后一个命令的 Return 代码。
这通过填充变量不起作用,如图所示:
VARIABLE=`echo "My great Text"`
Return 代码始终为 0。
我怎样才能得到命令的Return代码?
您示例中的 VARIABLE 将获得命令的输出
echo $VARIABLE
My great Text
你需要用 $?
得到之后的结果值
echo
将始终 return 0 因为没有理由它会在这里失败。
一般情况下,您可以这样查看状态:
output=`script.sh`
retval="$?"
echo "Script output is: " $output
echo "Script return value is: " $retval
http://mywiki.wooledge.org/BashFAQ/002
注意,如果您使用 exit <code>
,这将读取脚本的 return 值(我相信是这样)。如果return值是脚本的输出,
retval=`script.sh'
应该使用(但它本身不是 return 值)
查看下一个示例:
serga@XXX:~$ false
serga@XXX:~$ v="My great text $?"
serga@XXX:~$ echo $v
My great text 1
serga@XXX:~$ true
serga@XXX:~$ v="My great text $?"
serga@XXX:~$ echo $v
My great text 0
您的代码已经完成了您的要求。为了看到它,您只需将 echo
替换为您在评论中提到的 script.sh
或其他可以 return 非零状态的命令。 $?
将设置为用于变量赋值的子 shell 的退出状态。
例如,这正确地报告 $?
是 1:
FOO=`echo "My great Text" ; false` ; echo $?
同样,这报告说 $?
是 0:
FOO=`echo "My great Text" ; true` ; echo $?
抱歉,问题是命令没有 return 正确的值:-(
谢谢支持
在 bash 我可以用 $? 得到最后一个命令的 Return 代码。 这通过填充变量不起作用,如图所示:
VARIABLE=`echo "My great Text"`
Return 代码始终为 0。 我怎样才能得到命令的Return代码?
您示例中的 VARIABLE 将获得命令的输出
echo $VARIABLE
My great Text
你需要用 $?
得到之后的结果值echo
将始终 return 0 因为没有理由它会在这里失败。
一般情况下,您可以这样查看状态:
output=`script.sh`
retval="$?"
echo "Script output is: " $output
echo "Script return value is: " $retval
http://mywiki.wooledge.org/BashFAQ/002
注意,如果您使用 exit <code>
,这将读取脚本的 return 值(我相信是这样)。如果return值是脚本的输出,
retval=`script.sh'
应该使用(但它本身不是 return 值)
查看下一个示例:
serga@XXX:~$ false
serga@XXX:~$ v="My great text $?"
serga@XXX:~$ echo $v
My great text 1
serga@XXX:~$ true
serga@XXX:~$ v="My great text $?"
serga@XXX:~$ echo $v
My great text 0
您的代码已经完成了您的要求。为了看到它,您只需将 echo
替换为您在评论中提到的 script.sh
或其他可以 return 非零状态的命令。 $?
将设置为用于变量赋值的子 shell 的退出状态。
例如,这正确地报告 $?
是 1:
FOO=`echo "My great Text" ; false` ; echo $?
同样,这报告说 $?
是 0:
FOO=`echo "My great Text" ; true` ; echo $?
抱歉,问题是命令没有 return 正确的值:-( 谢谢支持