2015-01-24 2 views
1

내가 인수로 전달되는 폴더의 수를 계산하기 위해 노력하고, 어떻게 든 증가가 0 코드처럼 보이는 반환됩니다 `수는 0 값으로 반환됩니다

all=ls $1 | grep $2 
echo $all 

k=0 
for i in $all 
do 
    if [ -d "$i" ];then 
k=$((k+1)) 
    fi 
    echo $i 
done 
echo $k 

파이를

$ 1은 폴더 이름이고 $ 2는 폴더 이름의 일부입니다. 예를 들어 폴더 내의 폴더 수를 계산해야합니다. 테스트 폴더 안에 폴더가 3 개 더 있고 개수는 3이지만 0이 계속됩니다. 값

+0

K = $ (($ K + 1)) ???? –

답변

1

스크립트의 구문 문제는 많습니다. 그런 다음

cntdir() { local a=("$1"/"$2"*/); echo "${#a[@]}"; } 

로 전화 :

cntdir folder1 abc 
  • 이 기능은 어디 /에서 글로브 패턴 "$1"/"$2"*/을 사용하여 배열 a을 생성

    는이 기능을 사용할 수있는 폴더 안에 폴더를 계산하려면 끝은 우리가 단지 디렉토리와 일치한다는 것을 확인합니다.
  • ${#a[@]} 배열 요소 수를 얻는다
+1

아하. 나는 그것을 시도하고 일했다. 감사! – Michael

+0

다행 이니 다행입니다. – anubhava

관련 문제