我试图进入目录/cygdrive/c/Users/my dir/Documents
:
$ DOCS="/cygdrive/c/Users/my\ dir/Documents"
$ echo $DOCS
/cygdrive/c/Users/my\ dir/Documents
$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my\: No such file or directory
$ cd /cygdrive/c/Users/my\ dir/Documents
(success)
手动输入时,退格键会执行转义字符操作,但是在使用变量DOCS
的参数扩展时不会。
我尝试了其他变量,比如没有反斜杠。
$ DOCS=/cygdrive/c/Users\ dir/Documents
$ echo $DOCS
/cygdrive/c/Users/my dir/Documents
$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my: No such file or directory
或$ DOCS="/cygdrive/c/Users/my dir/Documents"
$ echo $DOCS
/cygdrive/c/Users/my dir/Documents
$ cd $DOCS
-bash: cd: /cygdrive/c/Users/my: No such file or directory
同样的情况也会发生在$HOME
中:$ echo $HOME
/home/my dir
cd $HOME
也不起作用。必须在它周围加上引号。
到底是怎么回事:
$ DOCS="\"/cygdrive/c/Users/my dir/Documents\""
$ echo $DOCS
"/cygdrive/c/Users/my dir/Documents"
$ cd $DOCS
-bash: cd: "/cygdrive/c/Users/my: No such file or directory
DOCS="/cygdrive/c/Users/my dir/Documents"
。 - Floriscd
命令时,请使用cd "$DOCS"
。 - Floris