構文エラー:予期しないファイルの終わり[閉じる]

構文エラー:予期しないファイルの終わり[閉じる]
#!/bin/sh
if [ -e $1 ] ; then 
mv $1 $1_$(date +%Y%m%d%H%M) 
fi
exit 0

私の要件は、ファイルを見つけることです。ファイルが存在する場合は、ファイル名を変更してプログラムを終了します。ファイルが存在する場合にのみ名前を変更する必要があります。

上記のエラーが発生します。

ベストアンサー1

通常、bash変数は常に二重引用符で囲む必要があります。

たとえば、$ 1があるとしますMy File.txt。あなたのスクリプトは以下を実行しようとします。

mv My File.txt My File.txt_201501010101

これは、ファイル、およびを移動mvすることを意味します。MyFile.txtMyFile.txt_201501010101

あなたが望むものは次のとおりです。

mv "My File.txt" "My File.txt_201501010101"

詳細と避けるべきその他のトラップについては、以下を参照してください。 http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target

exit 0スクリプトの末尾にあるPSは重複しています。スクリプトがエラーなしで完了すると、終了ステータスは暗黙的にゼロです。

おすすめ記事