【发布时间】:2013-08-21 19:44:59
【问题描述】:
我正在尝试进入目录/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" -
没有区别。我在上面进行了编辑,因此空间中没有逃脱。
-
如果我使用反斜杠或引号转义空格并没有真正的区别,但我还是再次这样做了。见修订。
-
当你想
cd时,使用cd "$DOCS" -
我不想使用引号。我很懒,呵呵。虽然我会说它确实有效。