【发布时间】:2013-02-12 12:23:12
【问题描述】:
我已经看到很多关于这个主题的答案,但我不想这样做
find。我已经写了这个,但有些东西不起作用:
function CountEx()
{
count=0
for file in `ls $1`
do
echo "file is $file"
if [ -x $file ]
then
count=`expr $count + 1`
fi
done
echo "The number of executable files in this dir is: $count"
}
while getopts x:d:c:h opt
do
case $opt in
x)CountEx $OPTARG;;
d)CountDir $OPTARG;;
c)Comp $OPTARG;;
h)help;;
*)echo "Please Use The -h Option to see help"
break;;
esac
done
我正在使用如下脚本:
yaser.sh -x './..../...../.....'
shell 运行它,然后输出:
The number of executable files in this dir is: 0
当这个目录下有很多可执行文件时。
【问题讨论】:
-
什么是“不工作”?很高兴您提供了代码,但您还应该包括您的预期和实际输出。如果您希望人们能够重现您的结果,那么更详细地描述输入会有所帮助。哦,你是 parsing LS。不要那样做。
-
该脚本草率到足以破坏带有空格的目录,带有特殊字符的文件名以及谁知道还有什么,但它绝对可以在经过消毒的环境中工作(文件和目录名称没有什么特别的)。描述某事如何不适合你。
-
根据以下答案的多样性,您是在寻找 executables 的数量(正如您在标题中所说),还是 子目录的数量 i>,正如您在代码中所暗示的那样?
-
对不起,我把 CountDir 函数代替了 CountEx 但这是同样的问题,因为我想使用 ls 并传递给它 $1 然后计数可执行文件或目录的数量
-
对不起,我刚刚更正了功能,