Windows上的Git Bash中的Bash扩展变量不起作用?

加百列

为什么以下各项不起作用(无输出):

fileRe="-regex '.*\.h'"
find "." -type f $fileRe

但是以下工作(并输出结果)

find "." -type f -regex '.*\.h'

使用: /c/Program Files/Git/bin/bash

这不直观吗?

亚诺斯

当您键入find "." -type f -regex '.*\.h'并按Enter键时,外壳程序会将单引号解释为固定字符串的封闭标记,并使用封闭的值作为传递给find命令的参数

与此相反,当您设置时fileRe="-regex '.*\.h'",双引号内的值将按原样存储(在变量扩展之后),而嵌入式单引号将按字面值获取。

然后,当您传递$fileRe给时find,该值将按存储时的值使用,不会重新解释,因此该值中的文字单引号仍然是文字单引号。

要实现所需的功能,可以改用Bash数组:

fileRe=(-regex '.*\.h')
find . -type f "${fileRe[@]}"

此版本与您的版本的不同之处在于,传递给findare-regex的参数.*\.h单引号不是值的一部分,因为它们是在创建数组的值时使用的,并且没有嵌入在双引号表达式中。

在任何Bash shell中,无论使用什么操作系统,此行为都是相同的。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

notepad ++在Git Bash中不起作用

鼠标选项在Git-Bash Windows上的Vim中不起作用

命令行上的Shell参数扩展在bash脚本中不起作用

Spring Boot CLI 在 Windows 上的 Git Bash 上不起作用

类型.git \ HEAD在Windows 10的Git Bash中不起作用

cURL命令在git bash中起作用,但在cmd和powershell中不起作用

github api 在 git bash 中不起作用,但在 cmd 中它起作用

退格键不起作用git bash

Git Portable 64 Bash在Windows Server 2016 Task Scheduler中不起作用

在Windows下扩展git bash中的$ PATH变量

Windows 10内部版本14316:Ctrl + v在Windows上的Ubuntu上的Bash上不起作用

Windows 10内部版本14316:Ctrl + v在Windows上的Ubuntu上的Bash上不起作用

制表符补全和箭头键在Git Bash中的GHCI中不起作用

Windows上的Git通过SSH推送不起作用

AWS EB(Elastic Beanstalk)CLI在git bash的命令行中不起作用

终端颜色代码在我的 Mac 上的 bash 中不起作用

节点在Windows上的Ubuntu上的Bash上不起作用

Windows上的Ubuntu上的Bash:信号处理程序不起作用

php shell_exec bash.exe在Windows XP IIS中不起作用

BASH-在shell脚本上获取UID不起作用

在Linux上的bash shell中导出PATH不起作用

Bash 脚本上的 Cron Pipe zcat 不起作用

git bash 上的 Lua 不起作用,可在 CMD 窗口上运行

Python getpass在Windows Git Bash(MINGW64)上不起作用

在Windows 10的Ubuntu上的Bash上安装git并在Windows上安装git bash?

为什么 chmod 在 Windows 上的 bash 模拟上不起作用?

npm命令在Windows(WSL)的Ubuntu上的Bash上不起作用

Windows vs WSL上的git bash

NPM环境变量在Windows中不起作用?