0

sudo crontab リストを介して切り替えたい bash ファイルがあります。問題は、sudo を使用してスクリプトを実行すると、次の行に構文エラー メッセージが表示されるため、機能しないことです。

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

なしで同じスクリプトを実行すると、sudo pw を入力する必要がありますが、問題なく動作します。ブラケット、バッククォートの有無、スペースの有無など、すでにいくつかのバリエーションを試しましたが、何も役に立ちませんでした。エラーメッセージは次のとおりです。

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

何か助けはありますか?

4

2 に答える 2

4

ここでの問題は、bash-syntax を使用していることと、スクリプト (cron から実行された場合) が/bin/sh(配列と()構造について何も知らなかった) によって解釈されることです。

bashshe-bang 表記を使用して、スクリプトのインタープリターとして指定する必要があります。

#!/bin/bash

bashまたは、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 に答える