【问题标题】:Bash shell iterating through directory doesn't work as expected遍历目录的 Bash shell 无法按预期工作
【发布时间】:2022-01-02 04:38:21
【问题描述】:

我正在尝试遍历一个目录,但 for 循环没有按预期工作。看看这个:

for dirname in "/dir_example/*"; do
    echo "$dirname"
done

发生的情况是它只回显字符串“/dir_example/*”并且不遍历目录。我在另一台服务器上试过它,它工作。 shell 在同一台计算机上是 bash。怎么可能?

【问题讨论】:

  • 它在另一台计算机上与 bash 一起工作?你确定吗?请检查两次:如果是,您在 bash 中发现了一个错误,是时候报告它了(不要忘记 bash 版本、操作系统等)

标签: bash for-loop wildcard glob quotes


【解决方案1】:

* 这样的全局对象只有在不加引号的情况下才会被扩展。幸运的是,您可以在同一个单词中加入和退出引号:

for dirname in "/dir_example"/*; do
    echo "$dirname"
done

【讨论】:

    【解决方案2】:

    对不起,我发现了我的错误。不同服务器上的目录名称有错字(一个不存在的目录),这就是 echo 打印字符串的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-05
      • 2013-12-07
      • 2011-05-11
      • 1970-01-01
      • 2013-09-30
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多