Bashvariables赋值使用另一个variables作为一部分

我有一个用于备份数据库的bash脚本的摘录

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

我正在尝试在FILENAMEvariables赋值中重用DB的值,但它不会让我用这种方式来replace。 我只是得到文件名的时间戳。

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

谢谢。

问题是, bash不知道你的意思是$DB而不是$DB_ (这是一个完全有效的variables名)。

最好的select是在名称周围使用大括号来明确variables的名称:

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

这样可以节省转义其他字符的麻烦,这些字符不能被解释为variables名的一部分。

或者,使用大括号来隔离您的variables。 我认为这比在那里引用报价要清楚一些。

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

将下划线用双引号括起来(或者用更强的单引号):

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