执行命令并将结果放入变量中...全部在 bash 脚本中

执行命令并将结果放入变量中...全部在 bash 脚本中

我正在编写一个 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 了。

相关内容