遍历目录的 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 文件合并为一个后,它无法正常工作