shell:为啥循环内调用脚本,遇到exit会退出循环?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell:为啥循环内调用脚本,遇到exit会退出循环?相关的知识,希望对你有一定的参考价值。
a.sh文件中while循环内需要调用b.sh,但是b.sh中存在exit命令行;执行a.sh之后,会跳出循环;
注:是跳出循环,不是read读空问题。
#a.sh文件如下:
#! /bin/sh
while true
do
echo "loop $i"
. b.sh
echo "loop 100"
done
echo "end loop"
#b.sh文件如下:
#! /bin/sh -x
echo "b.sh is process"
exit 0
echo "B.SH is process"
结果如下:
loop
b.sh is process
end loop
请问大神,有没有办法不跳出循环,继续执行循环内容?
注:不能改动b.sh文件,因为该文件是系统文件。
#! /bin/sh
while true
do
echo "loop "
. ./b.sh
echo "loop 100"
done
echo "end loop"
[root@localhost ~]# cat b.sh
#!/bin/sh -x
echo "b.sh is process"
exit 0
echo "B.SH is process"
[root@localhost ~]# sh a.sh
loop
b.sh is process
我的结果是正常的。。。
不好意思,当while true前面加cat 某个txt时,就是跳出循环了。
不过我想知道的是:
有没有办法不跳出循环,继续执行循环内容?
注:不能改动b.sh文件,因为该文件是系统文件。
break跳出循环continue结束本次循环exit退出整个脚本
break跳出循环脚本
[[email protected] shell]# vim break.sh
#!/bin/bash
for i in `seq 1 5`
do
echo $i
if [ $i -eq 3 ]
then
break
fi
echo $i
done
echo jiesu
执行结果
[[email protected] shell]# sh break.sh
1
1
2
2
3
jiesu
continue结束本次循环
忽略continue之下的代码,直接进行下一次循环
脚本
[[email protected] shell]# vim continue.sh
#!/bin/bash
for i in `seq 1 5`
do
if [ $i -eq 3 ]
then
continue
fi
echo $i
done
echo jiesu
执行结果
[[email protected] shell]# sh continue.sh
1
2
4
5
jiesu
exit退出整个脚本
脚本
[[email protected] shell]# vim exit.sh
#!/bin/bash
for i in `seq 1 5`
do
echo $i
if [ $i -eq 3 ]
then
exit
fi
echo $i
done
echo jiesu
执行结果
[[email protected] shell]# sh exit.sh
1
1
2
2
3
以上是关于shell:为啥循环内调用脚本,遇到exit会退出循环?的主要内容,如果未能解决你的问题,请参考以下文章
[转帖]Shell脚本中的break continue exit return
为啥 sys.exit() 在 Python 的线程内调用时不退出?
for循环while循环break循环continue结束本次循环exit退出整个脚本