我有一个脚本,在一些目录上有一个循环,每个目录都执行一个程序。
folders=( "1" "2" )
for i in "${folders[@]}"
do
cd $i
output=$(program)
while read -r line; do
match "$line"
done <<< "$output"
some code here
cd ..
done
现在我希望脚本在program
与给定字符串匹配时停止正在运行的$line
,然后开始处理${folders[@]}
的下一个元素。基本上是脚本中的Strg + c。
编辑:如果字符串出现,我无法访问该程序并使其自行停止。
由于
答案 0 :(得分:1)
现在我希望脚本在$ line匹配时停止正在运行的程序 使用给定的字符串
if [ "$line" = "Put some similar text in here" ]
then
exit 0
fi
这会停止程序,就像你想要的那样。
然后开始处理$ {folders [@]}
的下一个元素
这是不同的。
您可以尝试像这样切换代码......
folders=( "1" "2" )
for i in "${folders[@]}"
do
cd $i
output=$(program)
while read -r line; do
if [ "$line" = "Put some similar text in here" ]
then
break
fi
done <<< "$output"
# some commands ...
done
if
条件检查字符串中的类似文本,break
命令将关闭while loop
。
<强>加成强>
相同的代码,不使用$output
作为临时存储...
folders=( "1" "2" )
for i in "${folders[@]}"
do
cd $i
while read -r line; do
if [ "$line" = "Put some similar text in here" ]
then
break
fi
done <<< "$(program)"
# some commands ...
done
这样你将exit
循环中的extern程序。