【问题标题】:Perl script in loop ends after one run循环中的 Perl 脚本在一次运行后结束
【发布时间】:2013-06-15 05:12:11
【问题描述】:

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

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

我已确认while-loop 循环。但是,在 Perl 脚本运行一次后,while-loop 结束。

有人能解释一下吗?

【问题讨论】:

    标签: perl shell


    【解决方案1】:

    您遇到的问题是由

    引起的
    exec /users/my_user/script_name $currentDate
    

    exec 导致您调用的 perl 脚本用新程序替换当前程序并保留当前 PID。

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

    【讨论】:

    • @daxim 抱歉,我急于回答我错过的问题,但我已经更新了我的答案。
    【解决方案2】:

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

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

    用给定的命令替换 shell。

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

    【讨论】:

      【解决方案3】:

      变化:

      exec /users/my_user/script_name $currentDate
      

      收件人:

      /users/my_user/script_name $currentDate
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-14
        • 2018-06-25
        相关资源
        最近更新 更多