2013-04-01 150 views
1

假设我有一个文件格式我要保存数据库备份来给出这样:重定向输出

echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql" 

现在我怎么可以指定这个结果作为壳输出文件名?

mysqldump my_db > ....? 

顺便说一句:壳解释一个嵌套echo命令作为可执行命令/文件的结果。所以

mysqldump my_db > $(echo "something") 

不起作用。相反,shell会查找名为something的文件并尝试执行它

回答

3

没有必要使用嵌套的回显。你可以避免它:

mysqldump my_db > ~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql 
0

$(echo“something”)不是问题,而〜是。

echo 'hello world' > $(echo "/home/root/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql") 

如果你有兴趣在如何使用〜: 如果使用完整路径,它工作正常

eval "echo 'hello world' > $(echo "~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql")" 
+0

不是真的...庆典重定向可以处理'〜';不需要将'〜'转换为'/ home/root /';除非它由其他用户或非互动方式运行...... – anishsane