#!/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
することを意味します。My
File.txt
My
File.txt_201501010101
あなたが望むものは次のとおりです。
mv "My File.txt" "My File.txt_201501010101"
詳細と避けるべきその他のトラップについては、以下を参照してください。 http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target
exit 0
スクリプトの末尾にあるPSは重複しています。スクリプトがエラーなしで完了すると、終了ステータスは暗黙的にゼロです。