Bash 使用另一个变量作为变量赋值

Bash 使用另一个变量作为变量赋值

我从用于备份数据库的 bash 脚本中摘录了以下内容

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB_$(date +%s).sql

我试图在变量赋值DB中重用值FILENAME,但它不允许我以这种方式使用替换。我只是获取文件名的时间戳。

是否可以实现我想要的?如果可以,语法是什么?

谢谢。

答案1

问题是bash不知道您的意思是$DB代替$DB_(这对于变量来说是一个完全有效的名称)。

最好的选择是使用括号明确说明变量的名称:

FILENAME=${DB}_$(date %s).sql

这省去了转义不应解释为变量名一部分的其他字符的麻烦。

答案2

或者,使用括号隔离变量。我认为这比在里面放引号更清楚一些。

FILENAME=${DB}_$(date +%s).sql

答案3

将下划线括在双引号中(或更强的单引号中):

#!/bin/bash
DB=database_name
DBUSER=username
FILENAME=$DB"_"$(date +%s).sql

相关内容