我正在尝试制作一个 bash 脚本来处理目录中的每个文件。所有这些文件名都以点开头,因此它们是隐藏的。当我尝试使用通配符获取目录中的所有内容时,通配符没有扩展。
我的循环代码现在看起来像这样:
#!/bin/bash
shopt -s extglob
for i in "$(pwd)"/*; do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
输出只是/Users/.../*. 通配符不会扩展。
这与其他一些线程不同,因为它专门处理隐藏文件。如果我test在目录中添加一个类似的文件,那么它就可以工作。我明白了/Users/.../test。
我也尝试在终端中单独运行它并得到相同的结果。如何获取通配符以扩展隐藏文件?
我想到了!仔细查看 shopt的文档,有一个名为的选项dotglob可用于包含以点开头的文件名!
我添加shopt -s dotglob到脚本的开头,现在可以使用了。输出现在列出了每个隐藏的文件和目录(除了./和../)。
我的脚本现在看起来像这样:
#!/bin/bash
shopt -s extglob
shopt -s dotglob
for i in "$(pwd)"/*; do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |