2016-05-20 4 views
0

サービスが起動してrunnigを待つのに使っていますが、最初のattempの後にcurlを使って接続し、スクリプトの終了をすべて失敗します。 カールがうまくいかないと終了するのを避ける方法はありますか?私はカールに--failを使ってみましたが、何もしませんでした。curlの失敗時にスクリプトの終了を避ける

ここに私のコード

#!/bin/bash 

getX(){ 
     echo `curl --fail domain.com` --> should return an array 
} 
test(){ 
    result=`getX` 
    while [ ${#result[@]} -eq 0 ] 
    do 
     echo "waiting" 
     result=`getX` 
    done 
} 
test 
+0

を 'set -e'とすると、パイプラインが非ゼロステータスを返すとすぐにスクリプトは終了します。 – fedorqui

+0

'--fail'は非ゼロステータスを防ぎませんが、HTTPエラーの出力を防ぎます。https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html – Aaron

+0

あなたは正しいですが、そこにいなくて前に失敗していました。私は質問のスクリプトを更新します – paul

答えて

2

は私の提案は、出力を使用しないことが、カールのリターンコード、どのようにそのことについてでしょうか?

getX(){ 
     result=`curl --fail domain.com` --> should return an array 
    rc=$? 

} 
test(){ 
    getX 
    while [ $rc -ne 0 ] 
    do 
     echo "waiting" 
     getX 
    done 
} 
test 
+0

は魅力的です!、ありがとう! – paul

1

これは決して要素がゼロの配列にはなりません。 代わりにwhile [ -z "${result[0]}" ]を使用してください。さらに、カールの--fail-sに置き換えてください。

関連する問題