【问题标题】:Passing arguments to at -f script将参数传递给 at -f 脚本
【发布时间】:2021-05-27 20:32:18
【问题描述】:

我正在尝试在 Linux 上使用 at 命令安排 bash 脚本。

at 22:20 -f /path/to/script.sh

发出上面的命令就可以了。但是,该脚本需要一些参数。在脚本路径后面添加 Params 会返回错误消息:

at 22:20 -f /path/to/script.sh /arg/one argtwo argthree
syntax error. Last token seen: /

是的,传递给脚本的第一个参数是另一个(绝对)路径。我的猜测是,at 不会将我的脚本视为脚本,而是将其视为文件,正如at -help 所暗示的那样。

我该如何解决这个问题并将参数添加到脚本中?

【问题讨论】:

    标签: linux bash parameters at-job


    【解决方案1】:

    指定要在标准输入上运行的命令,例如通过这里的字符串:

    at 22:20 <<< "/path/to/script.sh /arg/one argtwo argthree"
    

    您的命令不会尝试在某个时间运行/path/to/script.sh。相反,它从/path/to/script.sh 读取并复制所有命令并在以后运行这些命令。由于您没有调用脚本本身,因此谈论参数是没有意义的。

    【讨论】:

      【解决方案2】:

      你说得对,它只是一个文件名,而不是一个命令。你应该只运行at 22:20,然后作为该命令的输入,给出你想在 22:20 运行的命令(即/path/to/script.sh /arg/one argtwo argthree),然后在单独的行上按 Control-D标记输入的结束。它应该看起来像这样($ 是我的提示):

      $ at 22:20
      /path/to/script.sh /arg/one argtwo argthree
      job 11 at Thu May 27 22:20:00 2021
      $ 
      

      (请注意,“job 11 ...”是打印的确认消息at。)

      【讨论】:

        【解决方案3】:

        您可以在没有 -f 的情况下将任何命令作为输入:

        at 22:20 
        /path/to/script.sh /arg/one argtwo argthree
        ^d
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-15
          • 2019-11-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多