2017-08-04 251 views
-1

管道命令的退出状态我得到了输入密码提示的脚本。对于我在其他脚本中使用echo <password> | script.sh,使用户在开始输入密码,而不是提示它了。获取壳牌

我想知道echo <password> | script.sh命令的退出状态。我试过status=echo <password> | script.sh; echo $status,但它只是一个换行符。另外echo echo<password> | script.sh不起作用。

+1

'男人bash',搜索'$' – gboffi

+0

你可能会寻找'$ {PIPESTATUS [0]}'?参见[获取多数民众赞成管道输送到另一个进程的退出状态(https://unix.stackexchange.com/q/14270/56041),[Bash中进行管道输出和捕获退出状态(https://stackoverflow.com/q /六十〇万八千六百三十九分之一百二十二万一千八百三十三),[你如何使用PIPESTATUS,发球和/ bin/sh的在一起?](https://superuser.com/q/704460/173513),[如何获得这两个PIPESTATUS和bash脚本输出] (https://superuser.com/q/425774/173513)等。 – jww

回答

1

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

# 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