Bash 为什么这段代码会导致无休止的循环?
我有一个脚本调用另一个脚本。问题是,这是无止境的。 请帮忙 脚本1:/tmp/caseCheckBash 为什么这段代码会导致无休止的循环?,bash,Bash,我有一个脚本调用另一个脚本。问题是,这是无止境的。 请帮忙 脚本1:/tmp/caseCheck #!/bin/sh aaa=1 echo "Begin $1" case "$1" in start) echo "Start" ;; stop) echo "Stop" ;; reload) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|reload}"
#!/bin/sh
aaa=1
echo "Begin $1"
case "$1" in
start)
echo "Start"
;;
stop)
echo "Stop"
;;
reload)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|reload}"
;;
esac
脚本2:/tmp/trigger
#!/bin/bash
do_admin() {
echo "Starting Trigger"
}
do_admin
. /tmp/caseCheck "reload"
echo "-----------------------"
exit 0
当我运行./trigger时,预期结果是:
启动触发器
开始重新加载
起止
停止
开始
开始
“-------------”
但它一直在继续
产生以下输出
启动触发器
开始重新加载
启动触发器
开始重新加载
启动触发器
开始重新加载
启动触发器
开始重新加载
启动触发器
开始重新加载
启动触发器
开始重新加载
请帮忙
. /tmp/caseCheck "reload"
这就是问题所在。基本上,您正在将
/tmp/caseCheck
源代码添加到/tmp/trigger
中,并将重新加载
设置到参数中。寻源后,$0
仍然是触发器。移除圆点应该可以修复它。这是一个开关,您可以使用“停后中断”功能。如果您不想在停止后启动,可以反向启动和停止。@headmax bashcase
不会失效。我们需要更多的输出和代码。你粘贴的作品应该终止。它仍然在每一个案例后都会断断续续地运行?更正:事实上,bash扩展允许跳转,但这里不是这样。啊哈<代码>/tmp/案例检查“重新加载”不要这样做。只需执行/tmp/caseCheck“reload”
。我会解释的。