linux - shopt -s nullglob 意外影响读取
问题描述
我希望两个输出都相等,foo [Required] bar
但是在设置消失后。为什么?nullglob
[Required]
我正在运行 MacOS。
谢谢!
$ bash --version
GNU bash, version 5.0.18(1)-release (x86_64-apple-darwin19.5.0)
$ shopt -u nullglob
$ read < <(echo "foo [Required] bar"); echo $REPLY;
foo [Required] bar
$ shopt -s nullglob
$ read < <(echo "foo [Required] bar"); echo $REPLY;
foo bar
解决方案
由于您没有引用变量$REPLY
,因此在扩展变量后完成文件名扩展。
[Required]
是文件名通配符模式。它将匹配以下任何字符:R
, e
, q
, u
, i
, r
, d
.
你大概没有这样的文件名。该nullglob
选项意味着不匹配任何内容的通配符应替换为空字符串,而不是不展开。
故事的寓意:引用您的变量,除非您希望它们进行文件名扩展。
推荐阅读
- css - 图像正确适合 div
- java - 从消息(命令)中删除 @-Tag Discord JDA
- javascript - React Native:从类调用功能组件内部的函数
- loopbackjs - Loopback 4 验证返回 422 未执行,以及如何只需要三个属性之一
- python - psycopg2.extras.DictRow 使用 for 与 next 的行为不同
- python - 在 Python Dataframe 中查找匹配的相似关键字
- rust - 为什么我需要 mod 和 use 才能将模块引入范围?
- kubernetes - minikube 中 Kubernetes 上的 Kafka 无法正常工作
- keyboard - Shift + home 不再正确突出显示
- html - 悬停时在按钮内显示一些文本