2016-05-04 18 views
0

何らかの理由で、スクリプトを実行するときに2番目のecho行の出力が得られません。私のコードスニペットは次のとおりです。bashスクリプトの2番目のecho文が動作しない

IS_RUNNING=$(netstat -anp | grep ":7600" | grep java | awk '{print $7}' | cut -d"/" -f 2) 

    start(){ 
    nohup /bin/su -c "/opt/app/bin/service start" - user &>/dev/null & 
    echo "Starting Services please wait"  
    sleep 30 
    if [ "$IS_RUNNING" = java ]; 
    then 
    echo "Service is now running" 
    exit 0 
    fi 
} 

興味深いことです。私はそれを実行すると:

sh -x ./service start 

私が期待される出力を取得し、私の第二エコーが画面に書き込まれます。

+ case "$1" in 
+ start 
+ echo 'Starting Services please wait' 
Starting Services please wait 
+ sleep 30 
+ nohup /bin/su -c '/opt/app/bin/service start' - user 
+ '[' java = java ']' 
+ echo 'Service is now running' 
Service is now running 
+ exit 0 

のsh -xを使用しなければ、私は単純にこれを取得:

[[email protected]]# ./service start 
Starting Services please wait 
[[email protected]]# 

私は、単純な何かを見下ろすてる感じを持っています。誰も助けることができますか?

+0

あなたが提供したソースとは別の順番で私の出力が 'sh -x'出力ですか? –

+0

いいえ、その画面の右側にコピーされます。 – user53029

+1

この質問を他の人にもっと役立つように書き直せますか? 2番目のエコーがうまく動作しないbashスクリプトを使っている人は、同じ根本的な問題を抱えていないので、これに対する回答は役に立ちません。 –

答えて

2

走行ラインが一度評価されています

IS_RUNNING=$(netstat -anp | grep ":7600" | grep java | awk '{print $7}' | cut -d"/" -f 2) 

あなたはこのために機能させるか、スリープ後に開始()関数の中で、この行を含める必要があります。

関連する問題