我的shell脚本执行后停止

我正在写一个如下所示的shell脚本:

for i in $ACTIONS_DIR/* do if [ -x $i ]; then exec $i nap fi done 

现在,我想要实现的是列出$ ACTIONS_DIR中的每个文件,以便能够执行它。 $ ACTIONS_DIR下的每个文件是另一个shell脚本。

现在,这里的问题是,在使用exec之后,脚本停止,并且不会直接进入下一个文件。 任何想法为什么这可能是?

Solutions Collecting From Web of "我的shell脚本执行后停止"

exec取代了shell进程。 如果您只想将该命令作为子进程调用,请将其除去。

exec将PID的控制转移到您正在执行的程序中。 这主要用于脚本,其唯一目的是为该程序设置选项。 一旦exec命中,脚本中的任何内容都不会被执行。

另外,你应该尝试一些引用技巧:

 for i in $ACTIONS_DIR/* do if [ -x "$i" ]; then "./$i" nap fi done 

您也可以使用find(1)来查看此操作:

 find $ACTIONS_DIR \ -maxdepth 1 \ -type f \ -perm +0111 \ -exec {} nap \; 

exec永远不会返回给调用者。 你试一试

  if [ -x $i ]; then ./$i nap fi