在Peter Seebach的“Beginning Portable Shell Scripting”一书中,有一个例子列出了当前目录的所有子目录的内容:
#!/bin/sh
/bin/ls | while read file
do
if test -d "$file"; then
( cd "$file" && ls )
fi
done
我了解到解析ls很糟糕,应该优先考虑使用globing。您是否认为作者选择解析因为存在可移植性问题?
我愿意:
#!/bin/sh
for file in *
do
if test -d "$file"; then
( cd "$file" && ls )
fi
done
谢谢,
有人
答案 0 :(得分:3)
两种解决方案对于奇怪的文件名都不健壮,也不处理以“。”开头的目录。我会用find来写这个,例如:
find . -maxdepth 1 -type d -exec ls '{}' ';'
但首先我会质疑实际需要什么输出,无论是对于一个人来说是眼球还是另一个要消化的脚本。
你可能能够在单个“查找”中使用for / while ... do ... done循环来解决大量进程分支的问题。
答案 1 :(得分:2)