我想将/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
同样的结果:
$ dirname=('/c/users/me/dir name')
或
$ dirname=(/c/users/me/dir\ name)
哪种方式可以存储它?
答案 0 :(得分:3)
使用空格对路径变量进行双引号,以保留它,
dirName="/c/users/me/dir name"
cd "$dirName"
实际上,dirname
是一个内置的shell,推荐使用备用名称,以避免与实际命令混淆。
从man bash
页面
用双引号括起来的字符('“')保留引号内所有字符的字面值,但'$','`','\'除外,并且,当启用历史记录扩展时,'! ”。
答案 1 :(得分:1)
使用bash变量时,你应该双引它以保持其状态。
x='/home/ps/temp/bla bla'
cd $x ### <----used without double quotes.
sh: cd: /home/ps/temp/bla: No such file or directory
cd "$x" ### <---While using a bash variable you should double-quote it to presever its state.
pwd
/home/ps/temp/bla bla