我正在尝试创建一个快速脚本,该脚本将从备份文件夹中获取文件。备份文件每天生成,文件名格式为:
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
所以我不确定为什么会这样。请有人可以帮助我:)
答案 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)格式时,括号之间的所有字符组成命令;没有一个得到特殊对待。