这里给出了for和while两种循环,及两种不同的结果:
#for循环如下,a.sh中for循环内调用b.sh,如下:
#a.sh如下:
#! /bin/sh -x
for i in $(seq 10)
do
echo "loop $i"
source b.sh
done
echo "end loop $i"
#b.sh如下
#! /bin/sh -x
echo "b.sh is process"
exit 1
#结果如下:
loop 1
b.sh is process
#while循环如下,a.sh中while循环内调用b.sh,其中all_file.txt中有大量文件目录
#a.sh如下:
#! /bin/sh
cat all_file.txt | while read line_a
do
echo "loop $i"
. b.sh
done
echo "end loop"
#b.sh如下
#! /bin/sh -x
echo "b.sh is process"
exit 1
结果如下:
loop
b.sh is process
end loop
问题:for直接跳出整个脚本,和baidu里搜的exit解答一样;
但是while循环只是跳出循环,继续执行循环后的程序。
请大神给出答案。
对b.sh中的exit改成#exit后可以继续循环;
能否给出不改动b.sh,还能循环。
可以看出while也是可以exit的
不是while的错,是read的问题,exit 1是给了read,read读取不到东西结束循环。。。所以还会继续执行while后面的echo
追问那请问,有办法不修改b.sh中的文件内容,还能继续循环么?
追答没懂你的意思,我解释的是
cat all_file.txt | while read line_a
和
while true
对于exit 1系统做出的处理。。
和修改b.sh又是什么???
我意思是想继续执行循环内的内容,不要让它跳出来。
我原来把b.sh中的exit进行删除,它会继续循环!有没有办法不删除exit,还可以继续完成整个循环。
木有.....请正常逻辑写脚本,呵呵