shell 变量不起作用?

shell 变量不起作用?

我试图将日期存储在变量 ( $DATE) 中,以便稍后使用它,但它似乎不起作用。看出什么问题了吗?

DATE=$(date +"%Y-%m-%d %R")
sudo mysqldump -u root -pnotgivingyoumypassword --all-databases > ~/mysql_backups/$DATE.sql
cd /var/www && sudo tar -czf ~/www_backups/$DATE.tar ./

更新 错误信息是:

get:tar: 20\:41.tar: 无法 stat: 没有这样的文件或目录 tar: 由于先前的错误而以失败状态退出

它似乎适用于 mysql 转储,但在最后一个命令中使用它时失败。

答案1

您需要引用您的扩展$DATE,它正在经历分词,因此tar一旦扩展,就会传递两个参数而不是一个$DATE(重定向也是如此)。这是一个固定版本(已$DATE更改为$date; 按照惯例,只有环境变量应为全大写):

date=$(date +"%Y-%m-%d %R")
sudo mysqldump -u root -pnotgivingyoumypassword --all-databases > ~/mysql_backups/"$date.sql"
cd /var/www && sudo tar -czf ~/www_backups/"$date.tar" ./

http://mywiki.wooledge.org/Quotes

相关内容