2013-07-13 16 views
5
私は定期的にGmailにバックアップするのPostgreSQLの古いプライベートインスタンスをこのスクリプトを使用してい

:私はこの取得しています後半のとおり

#!/bin/bash 
/opt/local/lib/postgresql83/bin/pg_dump maxgests -U postgres | gzip --best -c > $1 && (/opt/local/bin/mutt -s `date "+%d-%m-%Y-%H:%M"` -a $1 $2 < /dev/null) 

./postgres_to_gmail.sh: line 2: $1: ambiguous redirect 

をとスクリプトはもはや機能しません。 Mac OS X 10.6.8。

何が間違っているのか、それを修正する方法はanytoneに伝えられますか? /tmp/database.gz

2番目の引数は、電子メールであるよう

最初の引数は、パスです。

+1

で呼び出すプログラムをチェックする必要があります ($ 1 $ 2)引数を設定しないのですか?他の何か、あなたはあなたのBashスクリプトのすべての**パスを含む変数を引用する必要があります。さもなければ、それらが空白を含んでいるとき(*、*でなければ)中断します。 –

+0

さて、私は最後のコマンドの周りのかっこが必要であるとは思わない、または役に立つと思います。 – tripleee

+0

あなたが正しいです、私は引数の値を明らかにしました。 –

答えて

9

$1は明らかに空です。

一般的な指針として、変数の補間を二重引用符で囲む必要があります。

+0

アドバイスをいただきありがとうございます。このスクリプトを呼び出しているcronジョブが悪い値を返していました。 –

+0

詳しい引用のガイダンスについては、[変数を引用符で囲む場合](http://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable)を参照してください。 – tripleee

1

呼び出し側は、あなたがcrontabファイルなど$ 1を見て何をするかまあ、定期的に より

$ echo > $1 
bash: $1: ambiguous redirect 
+0

それは間違いなく、cronjobは夢中だった。 –