2010-10-16 122 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