sudo bashfile会出现语法错误

时间:2012-08-07 09:56:06

标签: bash cron crontab sudo du

我有一个bash文件,我想通过sudo crontab列表切换。问题是,它不起作用,因为当我使用sudo运行脚本时,此行上有语法错误消息:

size=(`du -h $backupDir --summarize`)

如果我没有运行相同的脚本,我必须键入sudo pw,但它没有任何问题。 我已经尝试了一些带括号的变体,有或没有反引号,有或没有空格等,但没有任何帮助。错误消息是:

Syntax error: "(" unexpected (expecting ";;")

任何帮助?

2 个答案:

答案 0 :(得分:4)

这里的问题是你使用bash语法,而脚本(当它从cron执行时)由/bin/sh解释(对数组和()构造一无所知)。

您必须使用she-bang表示法指定bash作为脚本的解释器:

#!/bin/bash

或使用来自cron的bash显式运行脚本:

bash /path/to/script

或重写脚本,以便它可以在没有数组的情况下运行。

答案 1 :(得分:0)

可读性使用$()表格

size=$(du -h $backupDir --summarize)

如果你想坚持报价,那么

size=`du -h $backupDir --summarize`