遍历目录的 Bash shell 无法按预期工作

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于遍历目录的 Bash shell 无法按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Ansible 中的全局修改 $PATH 无法在常规 Linux shell 中按预期工作

将两个 bash shell 文件合并为一个后,它无法正常工作

ElasticSearch嵌套查询无法按预期工作

For 循环在 Django、HTML 中无法按预期工作

交互式shell脚本遍历文件目录下的所有文件和目录(绝对路径)

try/catch 的 Bash 模拟未按预期工作