我想存储/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)
哪种存储方式才是正确的?
用空格双引号路径变量以保留它,
\n\ndirName="/c/users/me/dir name"\ncd "$dirName"\nRun Code Online (Sandbox Code Playgroud)\n\n实际上,dirname它是一个内置的 shell,建议使用备用名称以避免与实际命令混淆。
从man bash页面来看,
\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