Linux Shell程序没有';行不通

Linux Shell程序没有';行不通,linux,bash,shell,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

对于作为用户输入提供的多个文件夹,我想计算它们包含的文件和文件夹中有多少与容器文件夹本身具有不同的权限设置

我已经编写了以下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

要使用命令替换:

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

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

添加到其他人的答案中:

exit1
应该是
exit1

  • 您不应该使用
    -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)
    
    permission=$(ls -al $1 | cut -d" " -f1)  
    perm=$(ls -l $i | cut -d" " -f1)
    
  • exit1
    应该是
    exit1