我想删除一些包含挂载(--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