如何在新的 shell 命令中使用保存在 bash 变量中的转义文件名字符串?

如何在新的 shell 命令中使用保存在 bash 变量中的转义文件名字符串?

问题:

我有一个转义字符串保存在变量中:

escapedFileName='/dbDumps/Mon\ Oct\ \ 1\ 15\:22\:50\ UTC\ 2018.sql'

但每当我尝试在以下命令中使用此文件名时,我都会收到一条错误消息,指出此路径不存在(即使它存在)。

/usr/bin/mysql -u root -pmypassword system < "$escapedFileName";

当我使用路径而不是字符串时,它起作用:

/usr/bin/mysql -u root -pmypassword system < /dbDumps/Mon\ Oct\ \ 1\ 15\:22\:50\ UTC\ 2018.sql

我究竟做错了什么 ?

答案1

将文本放在引号之间时不需要转义。

因此删除\s

escapedFileName='/dbDumps/Mon Oct  1 15:22:50 UTC 2018.sql'

而且你不应该逃避:,他们不需要它,而且它会破坏它。

相关内容