2017-08-04 81 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