#!/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。