我想删除一些包含已安装(--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*
删除所有以“Test”开头的目录。但它只删除了第一个。所以我必须为每个目录调用.du
。
我如何编写它,以便通过一次调用处理所有这些?
答案 0 :(得分:1)
在UNIX上,与DOS / Windows不同,在程序启动之前,会扩展glob表达式。因此:
.du Test*
运行.du Test1 Test2 Test3
之类的东西(如果那些是与glob匹配的文件)。因此,$1
表示Test1
,而$2
表示Test2
等。程序无法知道它最初是使用Test*
调用的命令行;它给出的只是后扩展阵列。
要迭代此数组中的所有元素,请使用:
for dirname in "$@"; do
答案 1 :(得分:1)
这正是你所要求的 - $1
是第一个参数。要遍历所有参数,请使用"$@"
:
for dirname in "$@"; do
您甚至可以将其保留,因为这是默认设置;
for dirname; do