我有一个bash文件,我想通过sudo crontab列表切换。问题是,它不起作用,因为当我使用sudo运行脚本时,此行上有语法错误消息:
size=(`du -h $backupDir --summarize`)
如果我没有运行相同的脚本,我必须键入sudo pw,但它没有任何问题。 我已经尝试了一些带括号的变体,有或没有反引号,有或没有空格等,但没有任何帮助。错误消息是:
Syntax error: "(" unexpected (expecting ";;")
任何帮助?
答案 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`