2010-10-16 86 views
-2

对于作为用户输入提供的多个文件夹,我想要统计它们包含的文件和文件夹的数量与容器文件夹本身具有不同的权限设置。Shell程序不起作用

我写了下面的shell代码。它为什么显示权限,但不计算任何内容?

#!/bin/sh 
if [ ! -d $1 ] 
then echo $1 nu este director 
    exit1 
fi 
ls -R $1 >temp 
permission= ls -al $1 | cut -d" " -f1 
for i in `cat temp` 
do 
    perm= ls -l $i | cut -d" " -f1 
if [ $permission -ne $perm ] 
    then n=`expr $n + 1` 
fi 
echo $n 
done 

回答

0

要使用命令替换:

permission=$(ls -al $1 | cut -d" " -f1) 
# ... 
perm=$(ls -l $i | cut -d" " -f1) 
0

您还没有初始化您的变量$n,所以你要expr通话扩展至expr + 1这是一个语法错误。您应该在stderr上看到很多“expr:syntax error”消息。只需在循环之前添加行n=0,你应该没问题。

0

添加到其他的答案:

exit1应该exit 1

1
  • 字符串比较,则不应使用-ne。你需要这样做:

    if [ "$permission" != "$perm" ] 
    then 
        n=`expr $n + 1` 
    fi 
    
  • 您需要初始化n才能增加它。

    n=0 
    
  • 你需要修复您的命令替换:

    permission=$(ls -al $1 | cut -d" " -f1) 
    perm=$(ls -l $i | cut -d" " -f1) 
    
  • exit1应该exit 1