Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么这段代码会导致无休止的循环?_Bash - Fatal编程技术网

Bash 为什么这段代码会导致无休止的循环?

Bash 为什么这段代码会导致无休止的循环?,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}"

我有一个脚本调用另一个脚本。问题是,这是无止境的。 请帮忙

脚本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}"
    ;;
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 bash
case
不会失效。我们需要更多的输出和代码。你粘贴的作品应该终止。它仍然在每一个案例后都会断断续续地运行?更正:事实上,bash扩展允许跳转,但这里不是这样。啊哈<代码>/tmp/案例检查“重新加载”不要这样做。只需执行
/tmp/caseCheck“reload”
。我会解释的。