0

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

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

如果我不运行相同的脚本,我必须输入 sudo pw,但它可以正常工作。我已经尝试了一些带括号的变体,带或不带反引号,带或不带空格等,但没有任何帮助。错误信息是:

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

有什么帮助吗?

4

2 回答 2

4

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

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

#!/bin/bash

bash或使用from cron显式运行脚本:

bash /path/to/script

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

于 2012-08-07T14:36:51.370 回答
0

从可读性使用$()表格

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

如果你想坚持反引号,那么

size=`du -h $backupDir --summarize`
于 2012-08-07T09:58:32.023 回答