Linux Shell程序没有';行不通
对于作为用户输入提供的多个文件夹,我想计算它们包含的文件和文件夹中有多少与容器文件夹本身具有不同的权限设置 我已经编写了以下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
#!/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