我正在编写一个 bash 脚本,在复制新文件之前备份配置文件。
我的片段如下:
mv ~/myStuff.conf ~/myStuff.conf.bak
cp ~/new/myStuff.conf ~/myStuff.conf
每次运行此脚本时,我希望备份文件名中有一个 unix 时间戳。我试过这个
DATEVAR=date +%s
mv ~/myStuff.conf ~/myStuff.conf.$DATEVAR.bak
但这不起作用,因为 date 函数没有执行,并且 bash 将其视为字符串,最终生成的文件是
myStuff.conf.date+%s.bak
关于如何将日期函数的结果放入变量有什么想法吗?
答案1
这是可能的命令替换。
DATEVAR=$(date +%s)
答案2
--[[z4us|binz--]]
export datevar=`date` # date embedded in backquotes
--[[z4us|binz--]]
echo $datevar
Lun 25 Gen 2016 15:56:14 CET
答案3
这不会回答保存命令输出的变量的问题。这个问题已经回答过了。至于示例脚本的其余部分;
稍微简短一点的版本:
mv ~/myStuff.conf ~/myStuff.conf.$(date +%s)
无需为仅需要或使用一次的内容设置变量。此外,为了与更多 shell 兼容,您还可以使用以下语法:
mv ~/myStuff.conf ~/myStuff.conf.`date +%s`
在我看来,使用日期戳作为扩展名就不需要在文件名中添加额外的 .bak 了。