连续 If 语句
Continuous If statement
我有 2 个脚本,一个是 software.sh
,另一个是 timer.sh
,它们都在不同的终端中执行。我希望检查软件执行持续时间的 if 语句连续检查,但显然它只在执行开始时检查一次:(
这是获取 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 }' | xargs kill
fi
done
这是software.sh
,执行各种生成的文件
#!/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"
Time
变量被分配了一个字符串,而不是管道的 return 值,因为它需要用 $(..)
或反引号括起来。
无论如何If
被执行了多次,它只是变量中的数值没有变化。
当您尝试调试循环和变量赋值时,您可以使用 set -x
或将来从 bash -x time.sh
开始。它将打印出所有执行的行和展开的变量。
我有 2 个脚本,一个是 software.sh
,另一个是 timer.sh
,它们都在不同的终端中执行。我希望检查软件执行持续时间的 if 语句连续检查,但显然它只在执行开始时检查一次:(
这是获取 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 }' | xargs kill
fi
done
这是software.sh
,执行各种生成的文件
#!/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"
Time
变量被分配了一个字符串,而不是管道的 return 值,因为它需要用 $(..)
或反引号括起来。
无论如何If
被执行了多次,它只是变量中的数值没有变化。
当您尝试调试循环和变量赋值时,您可以使用 set -x
或将来从 bash -x time.sh
开始。它将打印出所有执行的行和展开的变量。