在Shell中获取管道命令的退出状态

时间:2017-08-04 08:04:24

标签: linux bash shell

我有一个提示输入密码的脚本。为此,我在我的其他脚本中使用echo <password> | script.sh,以便用户在开头输入密码,不再提示输入密码。

我想知道echo <password> | script.sh命令的退出状态。我试过了status=echo <password> | script.sh; echo $status,但这只是换行符。此外echo echo<password> | script.sh无效。

1 个答案:

答案 0 :(得分:2)

默认情况下,管道命令的退出状态是管道最后一个命令的退出状态。

# returns 0 = SUCCESS
false | true ; echo $?

# returns 1 = FAILED
true | false ; echo $?

所以要检查案例中的退出状态:

echo  'password' | script.sh
status=$?

# example
if [[ $status = 0 ]]; then
    echo "SUCCESS"
else
    echo "FAILED $status"
fi