Bash:使用占位符循环访问文件



我想删除一些包含挂载(--bind)子目录的目录。我在名为 .du 的脚本文件中使用以下 for 循环。

for dirname in $1; do                                                                                                                                         
    sudo umount $dirname/images/Spielplatz
    sudo umount $dirname/sounds/Spielplatz
    sudo rm -r $dirname
done

我调用脚本文件

.du Test*

删除所有以"测试"开头的目录。但它只删除了第一个。所以我必须为每个目录调用.du

我必须如何编写它,以便它通过一次调用处理所有这些?

在 UNIX 上,与 DOS/Windows 不同,glob 表达式在程序启动之前展开。因此:

.du Test*

运行类似 .du Test1 Test2 Test3 的内容(如果这些是与 glob 匹配的文件)。因此,$1指的是Test1,而$2是指Test2,等等。该程序无法知道它最初是在命令行上使用Test*调用的;它给出的只是扩展后的阵列。

要遍历此数组中的所有元素,请使用:

for dirname in "$@"; do

它完全按照你的要求做——$1这是第一个参数。 要遍历所有参数,请使用"$@"

for dirname in "$@"; do

您甚至可以将其省略,因为它是默认设置;

for dirname; do

相关内容

  • 没有找到相关文章

最新更新