2

假设我有一个文件格式,我想将数据库备份保存为这样的:

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

现在如何将此结果指定为 shell 中输出的文件名?

mysqldump my_db > ....?

顺便说一句: shell 将嵌套 echo 命令的结果解释为可执行命令/文件。所以    看起来:

 mysqldump my_db > $(echo "something")

不工作。相反,shell 会查找一个名为something并尝试执行它的文件?

4

3 回答 3

5

无需使用嵌套回声。你可以避免它:

mysqldump my_db > ~/backups/$(date +'%Y-%m-%d_%H-%M-%S').sql
于 2013-04-01T05:29:28.093 回答
-1

$(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")"
于 2013-04-01T06:07:16.767 回答
-1

我认为有更多的可能性来回答这个问题: 如何用当前时间命名文件? [复制]

--

您可以使用不同的实用程序在 bash 中创建文件

使用触摸

root@ubuntu:~/T/e/s/t# touch $(date +"%T") //you can format time as per your need 

使用编辑器

root@ubuntu:~/T/e/s/t# vi $(date +"%T") 

使用重定向

root@ubuntu:~/T/e/s/t# echo "Input for file" > $(date +"%T")

时间格式

代替%T你可以使用你自己的时间格式参考: http: //man7.org/linux/man-pages/man1/time.1.html

于 2019-01-06T08:20:42.060 回答