错误'语法错误:“(在bash中声明数组时出现”意外“)

时间:2016-05-03 12:30:31

标签: bash crontab

this OP相同的问题,但必须是一个单独的原因。

以下脚本:

#!/bin/sh
arr=("cat" "dog" "bird")

以交互方式(debian)工作,但在crontab调用时失败:

/bin/sh: 2: /path/zero_check.sh: Syntax error: "(" unexpected

我尝试使用#!/bin/bash shebang,并使用declare -a arr=("cat" "dog" "bird")声明数组,但没效果。

知道为什么吗?

4 个答案:

答案 0 :(得分:5)

这里的问题是你正在使用这个shebang:

#!/bin/sh

arrays是shell特有的Bash特有的东西。

为了使其工作,将脚本的shebang更改为Bash:

#!/bin/bash

答案 1 :(得分:1)

在crontab条目中明确指定解释器。使用

bash /path/zero_check.sh

而不是

/path/zero_check.sh

答案 2 :(得分:1)

就文档而言, 我要运行一个旧脚本,该脚本在Shebang中出现语法错误:

#/bin/bash

代替

#!/bin/bash

还要检查脚本是否当然是可执行的。

答案 3 :(得分:0)

错误的bash函数声明非常类似的问题。从命令行可以正常运行,但是会导致cron失败...

function test () { ... }

Cron应该将错误保存在/ var / mail中

我还建议使用“ shellcheck”代替,因为它发现了另一个我没有注意到的错误。