新しいシェルコマンドでbash変数に格納されているエスケープファイル名文字列をどのように使用できますか? [コピー]

新しいシェルコマンドで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

引用符の間にテキストを入れるときにエスケープする必要はありません。

だから削除し\てください

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

そしてあなたはそれから逃げてはいけません:。彼らはそれを必要とせず、それを破壊します。

関連情報