为什么这段代码会导致无限循环?

时间:2017-10-29 21:56:15

标签: bash

我有一个脚本调用另一个脚本。问题是运行无穷无尽。 请帮忙。

script1:/ 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

script2:/ tmp / trigger

#!/bin/bash

do_admin() {
    echo "Starting Trigger"
}

do_admin

. /tmp/caseCheck "reload"
echo "-----------------------"

exit 0

当我运行./trigger时,预期的结果是:

启动触发器

开始重新加载

开始停止

停止

开始

开始

'----------------'

但它一直在继续......

制作以下输出

启动触发器 开始重新加载 启动触发器 开始重新加载 启动触发器 开始重新加载 启动触发器 开始重新加载 启动触发器 开始重新加载 启动触发器 开始重新加载

...

请帮忙

1 个答案:

答案 0 :(得分:2)

. /tmp/caseCheck "reload"

是问题所在。基本上,您要将/tmp/caseCheck发送到/tmp/trigger并将reload设置为您的参数。采购后,$0仍然触发。删除点应该修复它。