1

crontab を使用して 10 分単位でソース コードをバックアップする bash スクリプトがあります。スクリプトは 8 月末まで機能していました。9月1日から使えなくなりました。これはスクリプトです:

#!/bin/sh
date=`date +%e-%m-%y`
cd /home/neky/python
tar -zcf lex.tar.gz lex/
echo $date

mv lex.tar.gz lex-$date.tar.gz
mv lex-$date.tar.gz /home/neky/Dropbox/lex/lex-$date.tar.gz

手動で実行すると、現在の日付4-09-12とこのエラーが出力されますmv: target ‘4-09-12.tar.gz’ is not a directory

何が問題なのですか?

4

2 に答える 2

2

月の日が1桁の場合、スペースdateが含まれています(これは、新しい月にのみ機能しなくなった理由も説明しています)。その結果、コマンドが分割されます。つまり、

# this is what it you end up with
mv lex.tar.gz lex- 4-09-12.tar.gz

date +%d-%m-%y代わりに使用してください(の代わりに04-09-12注意してください)。%d%e


名前にスペースが本当に必要な場合は、変数を引用符で囲む必要があります。つまり、次のようになります。

mv lex.tar.gz "lex-$date.tar.gz"
mv "lex-$date.tar.gz" /home/neky/Dropbox/lex/
于 2012-09-04T16:37:17.077 に答える
0

文字%(日付形式の一部) は cron スクリプトの特殊な文字であるため、エスケープする必要があります。

于 2012-09-04T16:36:45.337 に答える