2017-04-08 7 views
0

私は2つのスクリプトを持っています.1つはsoftware.shで、もうひとつはtimer.shです。どちらも別々の端末で実行されます。私はそれが唯一の実行開始時に一度チェックします連続どうやらチェックされるソフトウェアの実行時間をチェックif文をしたい:(続きDo文

これは

software.shのPIDを取得し、その実行時間をカウント timer.shです
#!/bin/bash 
while ((1)); do 
PID_Ardu=$(pidof arducopter) 
Time= ps -p $PID_Ardu -oetime= | tr '-' ':' | awk -F: '{ total=0; m=1; } { for (i=0; i < NF; i++) {total += $(NF-i)*m; m *= i >= 2 ? 24 : 60 }} {print total}' 
if [[ $Time < 20 ]]; then **#THIS SHOULD BE EXECUTED CONTINOUSLY** 
     echo $Time 
else 
     echo INSIDE 
     ps -ef | grep software| grep -v grep | awk '{print $2}' | xargs kill 
fi 
done  

これはTime変数は文字列ではなく、Tの戻り値が割り当てられている様々な生成されたファイルを

#!/bin/bash 
chmod a+x *.exp 


./ACCF01.exp | wait |echo "FINISHED SCRIPT 1" #Run the ACCF01 script 

sed -i '/ACCF01.exp/d' ./software.sh #Delete previous line after finishing execution. 

./ACCF02.exp | wait |echo "FINISHED SCRIPT 2" 

sed -i '/ACCF02.exp/d' ./software.sh 

./ACCF03.exp | wait |echo "FINISHED SCRIPT 3" 

sed -i '/ACCF03.exp/d' ./software.sh 

./ACCF04.exp | wait |echo "FINISHED SCRIPT 4" 
+0

'bash -x timer.sh'で実行するか' set -x'を挿入すると、実行するコマンドが出力されます。 – eckes

+0

No luck :(私はまた、if文の中でスクリプト自体を実行して、それが継続的に実行されることを確実にしましたが... ... if文は最初から実行されます –

+0

何もないのはどういう意味ですか? – eckes

答えて

0

を実行software.shあります彼はそれを$(..)またはbackticksで囲む必要があるので、彼はパイプラインです。

いずれにしても、Ifは複数回実行されますが、変数には数値が変化しません。

ループと変数の割り当てをデバッグしようとすると、set -xを使用するか、または今後bash -x time.shで開始することができます。実行されるすべての行と変数が展開されて表示されます。