2017-09-24 11 views
0

外部コマンドまたはスクリプトをBashで呼び出し、完了を待って制御を呼び出し元のスクリプトに戻す適切な方法はありますか?私は何を見ていますと、外部スクリプトが終了したときに、それだけで戻って制御することなく、シェルに低下することがある:助けを外部コマンドを呼び出して終了時に制御を戻す

#!/bin/bash 

while [[ "${RUNAGAIN,,}" != *"no"* ]] 
do 
    $cmd="source ./otherscript.sh" 
    fg $cmd 

    echo "Do you want to run again?" 
    read RUNAGAIN 
done 
+1

''/otherscript.sh'は動作しません。 –

+0

私が正しく理解しているのであれば、Bashがコマンドを実行するときの通常の動作です。あなたの例では、 'source'コマンドを使用して外部スクリプトを読み込んで、現在の*シェルで実行することで変です。 –

+1

また、 'fg'コマンドがあなたに役立つものは何もしていないと思います。 –

答えて

0

感謝。単に "source ./externalscript.sh"を実行すると、私のためのトリックができました。なぜそれがなかったのか分かりません;最初から作業していますが、今はすべてが良いです。

+0

あなたはそれが*別の方法で*働かなければならないと思いますか? (あなたがその質問にそれを記述したなら、おそらく誰かがその誤解を直接扱う答えを加えることができるかもしれない)。 'fg'はジョブコントロールです。これは通常、非対話シェルではデフォルトでは無効になっていますが、その引数はjobspecです。ジョブ番号または既に実行中のバックグラウンドジョブを記述するパターンです。バックグラウンドジョブを開始していない場合(上記の場合は実行していない場合)、何もしません。 –

関連する問題