Bash 如何导航到由一个文件的内容指定的目录?

Bash 如何导航到由一个文件的内容指定的目录?,bash,Bash,我使用以下两个命令来更改目录。它似乎失败了,因为目录名包含空格 $ cat temp.temp /cygdrive/C/training_course/Our\ Document $ cd `cat temp.temp` -bash: cd: /cygdrive/C/training_course/Our\: No such file or directory 然而,下面的一个是正确的。 那么,上述方法有什么问题?有什么好方法可以将目录更改为某个文件内容中指定的位置吗 $ cd /cygdr

我使用以下两个命令来更改目录。它似乎失败了,因为目录名包含空格

$ cat temp.temp
/cygdrive/C/training_course/Our\ Document

$ cd `cat temp.temp`
-bash: cd: /cygdrive/C/training_course/Our\: No such file or directory
然而,下面的一个是正确的。 那么,上述方法有什么问题?有什么好方法可以将目录更改为某个文件内容中指定的位置吗

$ cd /cygdrive/C/training_course/Our\ Document

用Cygwin将不能
cd
的行读入
cat
命令。您可以尝试创建一个符号链接。
cd“$(cat temp.temp)”
可能有效。@TimBiegeleisen:可能不是这样。$cd“
cat temp.temp
”-bash:cd:/cygdrive/C/training\u course/Our\Document\:没有这样的文件或目录cd“$(cat temp.temp)”-bash:cd:/cygdrive/C/training\u course/Our\Document:没有这样的文件或目录$cd“/cygdrive/C/training\u-course/Our\Document”-bash:cd:/cygdrive/C/training\u-course/Our\Document:没有这样的文件或目录@JonathanLeffler。我认为上述三种方法失败的原因是因为“我们的文档”之间的空格已经被\转义了,所以双引号在这里不起作用。
cd”一点也不奇怪”$(cat温度)"
不起作用;文件中的反斜杠造成了严重破坏。这就是为什么它是一个注释建议,而不是答案。如果文件中的名称是磁盘上的名称-没有反斜杠-那么它会起作用。我认为答案中的
读取行
建议是你唯一的选择。我发现原来的反斜杠用于逃避s“我们的文档”之间的间隔也消失了,因此这也是内置命令“read”?$read line Yes的预期行为;
read
(不同于
read-r
)的工作方式(将反斜杠视为特殊)。请参阅的POSIX规范和上的Bash手册。@Zii:
因此这也是预期的行为
?是。但是,如果将
-r
参数与read ie
read-r
一起使用,则会得到与之前相同的错误,因为
-r
参数会阻止反斜杠转义被解释。
read line <temp.temp && cd "$line"
while read line
do
cd "$line"
//something here
cd ..
done <temp.temp