我从用于备份数据库的 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