【问题标题】:While/Do/Done Loop Error In Bash Script In CrontabCrontab 中的 Bash 脚本中的 While/Do/Done 循环错误
【发布时间】:2014-10-04 09:14:11
【问题描述】:

我正在尝试通过 crontab 运行 abash 脚本,但每次尝试时,该脚本都不会运行,并且我收到一条错误消息:“[[: Not Found”

我目前正在使用带有以下编码的 while 循环:

SHELL/=bin/sh

padtowidth=2
START=0
END=15
i=${START}

while [[ ${i} -le ${END} ]]
do

done
((i = i + 1))

我不知道为什么 crontab 不喜欢开头的双括号...

【问题讨论】:

  • cron 不是问题。 [[ 是 sh 中的无效语法。这是一个bashism。
  • 不建议在脚本中设置SHELL的值。 (它不太可能像你认为的那样做。)

标签: linux bash unix cron crontab


【解决方案1】:

使用bash 在 crontab 中显式运行您的脚本,因为/bin/sh 是 crontab 使用的默认 shell,例如

* ... * /bin/bash /path/to/your/script.sh

我不确定SHELL/=bin/sh 做了什么,但这是一个格式错误的分配。至少应该是SHELL=/bin/sh

【讨论】:

    【解决方案2】:

    那是因为 [[...]] 是 BASH 特定的。

    使用以下命令将您的 shell 更改为 BASH:

    SHELL=/bin/bash
    

    sh 甚至不支持算术评估括号 ((...))(用作脚本的最后一行)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2013-05-05
      • 2016-07-30
      • 2019-05-06
      • 2020-02-17
      相关资源
      最近更新 更多