如何将带有空格的路径存储到bash中的变量中

Ale*_*ldi 3 bash quoting

我想存储/c/users/me/dir name到一个变量中以将其传递给cd系统调用。

键入时有效:

$ cd '/c/users/me/dir name'

或者

$ cd /c/users/me/dir\ name

但如果我存储它则不起作用:

$ dirname="'/c/users/me/dir name'"
$ cd $dirname
$ bash: cd: /c/users/me/dir: No such file or directory
Run Code Online (Sandbox Code Playgroud)

相同的结果:

$ dirname=('/c/users/me/dir name')
Run Code Online (Sandbox Code Playgroud)

或者

$ dirname=(/c/users/me/dir\ name)
Run Code Online (Sandbox Code Playgroud)

哪种存储方式才是正确的?

Ini*_*ian 6

用空格双引号路径变量以保留它,

\n\n
dirName="/c/users/me/dir name"\ncd "$dirName"\n
Run Code Online (Sandbox Code Playgroud)\n\n

实际上,dirname它是一个内置的 shell,建议使用备用名称以避免与实际命令混淆。

\n\n

man bash页面来看,

\n\n
\n

将字符括在双引号 (\xe2\x80\x98"\xe2\x80\x99) 中会保留引号内所有字符的字面值,但 \xe2\x80\x98$\xe2\x80\x99、\ 除外xe2\x80\x98`\xe2\x80\x99、\xe2\x80\x98\\\xe2\x80\x99,当启用历史扩展时,\xe2\x80\x98!\xe2\x80\x99。

\n
\n