3

我在 shell 脚本的循环中运行 Perl 脚本:

  while [ $currentDate -le $toDate ]; do
    // code here...
    exec /users/my_user/script_name $currentDate
    // code here...
  done

我已经确认了while-loop循环。然而,在 Perl 脚本运行一次之后,就while-loop结束了。

有人可以对此有所了解吗?

4

3 回答 3

11

你正在使用exec. exec用新程序替换 shell 进程。您可能只想删除exec关键字。

exec [-cl] [-a name] [command [arguments ...]] [redirection ...]

用给定的命令替换 shell。

执行COMMAND,用指定的程序替换这个 shell。 ARGUMENTS成为 的论据COMMAND

于 2013-06-18T20:23:47.230 回答
1

改变:

exec /users/my_user/script_name $currentDate

到:

/users/my_user/script_name $currentDate
于 2013-06-18T20:22:49.693 回答
1

您遇到的问题是由

exec /users/my_user/script_name $currentDate

exec 导致的原因是您正在调用的 perl 脚本将当前程序替换为新程序并保留当前 PID。

如果从该行中删除 exec,它将允许程序正确生成并保持 shell 按预期运行。

于 2013-06-18T20:27:09.947 回答