1

我看过一些有类似问题的帖子,但我无法推断出一些解决方案来满足我自己的需求,所以我在这里。

我有一个简单的 shell 脚本,我需要它来 cd 到名称中带有空格的目录。目录每次都在同一个地方(/home/user/topleveldir),但目录名称本身对机器来说是唯一的,并且其中有一个空格(/home/user/topleveldir/{machine1}\ dir/, /home/user/topleveldir/{machine2}\ dir/)。我对在脚本中 cd 进入该唯一目录的最佳方法感到困惑。

4

2 回答 2

2

我不明白为什么像下面这样的东西不起作用

baseDir=/home/user/topleveldir
machine=<whatever machine name>
cd "$baseDir/$machine dir"
于 2012-09-14T23:30:06.550 回答
1

您需要引用该空格字符,以便 shell 知道它是参数的一部分,而不是参数之间的分隔符。

如果您在脚本中的该命令行上直接有目录,请使用单引号。在单引号之间,除了单引号外,每个字符都按字面意思解释。

cd '/home/user/topleveldir/darkstar dir/'

如果目录名称来自变量,请在命令替换周围使用双引号。始终在命令替换周围使用双引号,例如"$foo". 如果省略引号,则变量的值将被拆分为单独的单词,这些单词被解释为 glob 模式——这是非常不可取的。

directory_name='darkstar dir'
…
cd "/home/user/topleveldir/$directory_name"
于 2012-09-14T23:33:20.890 回答