Shell脚本:获取日期作为变量

时间:2018-07-04 10:31:21

标签: shell

我正在尝试创建一个快速脚本,该脚本将从备份文件夹中获取文件。备份文件每天生成,文件名格式为:

  

backup-sql-YYYYMMDD.zip

我正在尝试通过以下方式获取文件名:

#!/bin/sh

VAR_1="backup-sql-"
VAR_2=date +%Y%m%d
VAR_3=$VAR_1$VAR_2

echo "$VAR_3"

但是输出是:

  

backup-sql-

当我跑步时:

date +%Y%m%d

我明白了

20180704    

所以我不确定为什么会这样。请有人可以帮助我:)

2 个答案:

答案 0 :(得分:1)

您应该使用反引号捕获date命令的输出并将其分配给shell变量。

VAR2=`date "+%Y%m%d"`

如果要确保将变量值传递给后续子进程,则可以将其导出为:

export VAR2=`date "+%Y%m%d"`

答案 1 :(得分:1)

您可以使用:

$(command)

`command`

从您的示例中尝试:

VAR_2=$(date +%Y%m%d)

检查Command Substitution了解更多详细信息:

  

使用旧式的反引号形式的替换时,反斜杠保留其字面意思,除非后面跟有“ $”,“`”或“ \”。没有反斜杠的第一个反引号将终止命令替换。当使用$(command)格式时,括号之间的所有字符组成命令;没有一个得到特殊对待。