将cd复制到bash脚本中带有空格的未知目录名

将cd复制到bash脚本中带有空格的未知目录名,bash,shell,Bash,Shell,我看过一些有类似问题的帖子,但我不能推断出一些解决方案来满足我自己的需要,所以我就在这里 我有一个简单的shell脚本,我需要它cd到一个名称中带有空格的目录中。目录每次都在同一个位置(/home/user/topleveldir),但目录名本身对于计算机是唯一的,并且在其中有一个空格(/home/user/topleveldir/{machine1}\dir/,/home/user/topleveldir/{machine2}\dir/)。我不知道用什么样的方法才能将cd刻录到脚本中唯一的目录

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


我有一个简单的shell脚本,我需要它cd到一个名称中带有空格的目录中。目录每次都在同一个位置(
/home/user/topleveldir
),但目录名本身对于计算机是唯一的,并且在其中有一个空格(
/home/user/topleveldir/{machine1}\dir/
/home/user/topleveldir/{machine2}\dir/
)。我不知道用什么样的方法才能将cd刻录到脚本中唯一的目录中。

我不明白为什么下面这样的方法不起作用

baseDir=/home/user/topleveldir
machine=<whatever machine name>
cd "$baseDir/$machine dir"
baseDir=/home/user/topleveldir
机器=
cd“$baseDir/$machine dir”

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

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

cd '/home/user/topleveldir/darkstar dir/'
如果目录名来自变量,请在命令替换前后使用双引号在命令替换前后始终使用双引号,例如
“$foo”
。如果不加引号,变量的值将被分割成单独的单词,这些单词被解释为glob模式——这是非常不可取的

directory_name='darkstar dir'
…
cd "/home/user/topleveldir/$directory_name"

它被引用,不需要逃避。我可能应该提到机器名是动态生成的,所以我不知道它是什么。我当前的命令是grepping topleveldir内容的ls以返回我想要的目录,但是CDing到它中是我遇到麻烦的地方。对不起,不清楚!如何分配变量机器没有什么区别。只要报价正确,它仍然有效。谢谢Alex,我感谢您的反馈。简单的解决办法,不知道为什么我自己没想到。再次感谢,祝你周末愉快!