Linux Crontab中Bash脚本中的While/Do/Done循环错误

Linux Crontab中Bash脚本中的While/Do/Done循环错误,linux,bash,unix,cron,crontab,Linux,Bash,Unix,Cron,Crontab,我正试图通过crontab运行一个abash脚本,每次我尝试运行时,该脚本都不会运行,我会收到一个错误:“未找到” 我目前使用的while循环编码如下: SHELL/=bin/sh padtowidth=2 START=0 END=15 i=${START} while [[ ${i} -le ${END} ]] do done ((i = i + 1)) 我不确定为什么crontab不喜欢开头的双括号…这是因为[[…]]是特定于BASH的 使用以下命令将shell更改为BASH: SH

我正试图通过crontab运行一个abash脚本,每次我尝试运行时,该脚本都不会运行,我会收到一个错误:“未找到”

我目前使用的while循环编码如下:

SHELL/=bin/sh

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

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

done
((i = i + 1))

我不确定为什么crontab不喜欢开头的双括号…

这是因为
[[…]]
是特定于BASH的

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

SHELL=/bin/bash

sh
(用作脚本的最后一行)

中,甚至算术求值括号
(…)
也不受支持,这是因为
[…]
是特定于BASH的

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

SHELL=/bin/bash

即使是算术计算括号
(…)
sh
(用作脚本的最后一行)中也不受支持使用
bash
在crontab中显式运行脚本,因为
/bin/sh
是crontab使用的默认shell,例如

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

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

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

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

我不确定
SHELL/=bin/sh
的作用是什么,但它是一个格式错误的赋值。至少应该是
SHELL=/bin/sh

cron不是问题所在。
[[
在sh中是无效语法。这是一种bash主义。不建议在脚本中设置
SHELL
的值。(它不太可能像您认为的那样。)cron不是问题。
[[
在sh中是无效语法。这是一种bash主义。不建议在脚本中设置
SHELL
的值。(它不太可能像您认为的那样。)