Shell程序不起作用

时间:2010-10-16 10:34:26

标签: linux bash 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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你想使用命令替换:

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

答案 2 :(得分:0)

您尚未初始化变量$n,因此您对expr的调用会扩展为expr + 1,这是语法错误。你应该在stderr上看到很多“expr:syntax error”消息。只需在循环之前添加行n=0,您就可以了。

答案 3 :(得分:0)

添加到其他人的答案:

exit1应为exit 1