
#!/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是多餘的。如果腳本完成且沒有錯誤,則退出狀態隱含為 0。