【问题标题】:ksh - why presence of the "\" file in current working directory changes behavior of variable processingksh - 为什么当前工作目录中存在“\”文件会改变变量处理的行为
【发布时间】:2021-09-22 09:35:35
【问题描述】:

我遇到了第三方 ksh 脚本的问题。 发现由于用户主目录中名为“\”的文件而失败。

这是一个简单的测试用例:

$ mkdir -p ~/dir1 && cd ~/dir1 && touch '\' && x="\* a" && echo $x
\ a
$ mkdir -p ~/dir2 && cd ~/dir2 && x="\* a" && echo $x
\* a

问题是,为什么工作目录中存在“\”文件会改变结果。 这是预期的吗?

谢谢。

T.

【问题讨论】:

    标签: ksh


    【解决方案1】:

    看起来像预期的行为。

    如果您希望在这两种情况下都具有相同的行为,请在脚本中使用 set -o noglob,或使用 -f 选项运行脚本以禁用文件名替换。

    默认情况下 * 是插值时的特殊字符,因此将匹配任何存在的文件(在您的情况下,dir1 将仅包含一个具有反斜杠字符名称的真实文件。)

    第二个目录 dir2 没有真正的文件,所以 ksh 只显示您输入的模式。

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-15
      • 2015-01-07
      • 2019-03-16
      • 1970-01-01
      相关资源
      最近更新 更多