当目录名称包含空格时,使用bash变量进入目录不起作用

gsingh2011

假设我想将以下命令存储在变量中

cd "/cygdrive/c/Program Files/"

所以我这样做

dir="cd \"/cygdrive/c/Program Files/\""

那应该存储命令以导航到Program Files目录,所以当我键入$ dir时,它将带我到该目录。要检查报价是否已正确转义,我输入

echo $dir

这给了我

cd "/cygdrive/c/Program Files/"

因此,一切都应该正常工作。但是,当我键入时,

$dir

我懂了

bash: cd: "/cygdrive/c/Program: No such file or directory

我究竟做错了什么?我正在使用Cygwin,但我认为此问题通常适用于bash。

戈登·戴维森

简短的答案:请参阅BashFAQ#050(“我试图将命令放入变量中,但是复杂的情况总是会失败!”)。

长答案:当bash解析命令时,它将解析引号,然后替换变量。它永远不会返回并重新解析变量值中的引号,因此它们最终无济于事。使用echo检查命令是完全误导的,因为它在解析命令显示该命令如果您想查看实际执行的内容,请在执行时使用set -xshell打印命令,或者使用printf "%q " $dir; echo而不是普通回显。

如果要存储一个复杂的命令(即,在“单词”中带有空格或其他特殊字符的命令),则需要将其放置在数组中,而不是简单的文本变量,然后使用成语“''$ { array [@]}“,如下所示:

dir=(cd "/cygdrive/c/Program Files/")
"${dir[@]}"

现在,如果目的是制作易于键入的速记,显然这不是可行的方法。请改用Shell别名或函数:

alias dir='cd "/cygdrive/c/Program Files/"'
dir

或者

dir() { cd "/cygdrive/c/Program Files/"; }
dir

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash,将目录名称存储在变量中时出错

来自分类Dev

bash目录名称,在CDPATH中带有空格

来自分类Dev

当单词包含空格时,Bash循环不起作用

来自分类Dev

目录名称中有空格时如何使用查找?

来自分类Dev

如何使用Linux删除目录名称前的空格?

来自分类Dev

在目录名称中使用“&”

来自分类Dev

如何在Expect Shell中使用变量目录名称

来自分类Dev

Bash抓取目录名称以在循环中使用

来自分类Dev

在bash中的目录名称中使用逗号卷曲请求

来自分类Dev

检查PWD是否包含目录名称

来自分类Dev

在bash中增加目录名称

来自分类Dev

在bash中增加目录名称

来自分类Dev

Python:对于工作目录中的每个目录,请进入该目录并获取目录名称

来自分类Dev

如何使用非 ascii 访问目录,目录名称中包含 \n 字符

来自分类Dev

如何将bash别名配置为处理目录名称中的空格?

来自分类Dev

目录名称的别名,名称中带有空格

来自分类Dev

目录名称中有空格时如何在ssh上进行rsync

来自分类Dev

在bash中使用可变目录名称会阻止我查看该目录中的文件

来自分类Dev

bash complete:从已定义的目录中列出目录名称?

来自分类Dev

获取目录名称

来自分类Dev

无效的目录名称-您的应用程序包含已保留的目录名称

来自分类Dev

在循环中创建目录时捕获目录名称

来自分类Dev

使用Powershell对目录名称进行排序

来自分类Dev

solr复制目录名称未使用

来自分类Dev

使用PHP获取当前目录名称?

来自分类Dev

Bash:使用包含带有转义空格的目录的变量的意外行为

来自分类Dev

“ make”命令在包含“ space”的目录中不起作用

来自分类Dev

PHP - 包含在子目录中不起作用

来自分类Dev

FFmpeg使用Java运行时在Mac上以目录名称中的空格从PNG制作视频

Related 相关文章

  1. 1

    Bash,将目录名称存储在变量中时出错

  2. 2

    bash目录名称,在CDPATH中带有空格

  3. 3

    当单词包含空格时,Bash循环不起作用

  4. 4

    目录名称中有空格时如何使用查找?

  5. 5

    如何使用Linux删除目录名称前的空格?

  6. 6

    在目录名称中使用“&”

  7. 7

    如何在Expect Shell中使用变量目录名称

  8. 8

    Bash抓取目录名称以在循环中使用

  9. 9

    在bash中的目录名称中使用逗号卷曲请求

  10. 10

    检查PWD是否包含目录名称

  11. 11

    在bash中增加目录名称

  12. 12

    在bash中增加目录名称

  13. 13

    Python:对于工作目录中的每个目录,请进入该目录并获取目录名称

  14. 14

    如何使用非 ascii 访问目录,目录名称中包含 \n 字符

  15. 15

    如何将bash别名配置为处理目录名称中的空格?

  16. 16

    目录名称的别名,名称中带有空格

  17. 17

    目录名称中有空格时如何在ssh上进行rsync

  18. 18

    在bash中使用可变目录名称会阻止我查看该目录中的文件

  19. 19

    bash complete:从已定义的目录中列出目录名称?

  20. 20

    获取目录名称

  21. 21

    无效的目录名称-您的应用程序包含已保留的目录名称

  22. 22

    在循环中创建目录时捕获目录名称

  23. 23

    使用Powershell对目录名称进行排序

  24. 24

    solr复制目录名称未使用

  25. 25

    使用PHP获取当前目录名称?

  26. 26

    Bash:使用包含带有转义空格的目录的变量的意外行为

  27. 27

    “ make”命令在包含“ space”的目录中不起作用

  28. 28

    PHP - 包含在子目录中不起作用

  29. 29

    FFmpeg使用Java运行时在Mac上以目录名称中的空格从PNG制作视频

热门标签

归档