폴더에 포함된 여러 파일의 줄 크기를 누적하고 싶습니다. 나는 다음 스크립트를 작성했습니다.
let a=0
let num=0
for i in folder/*
do
num=`cat $i | wc -l`
a=$a+$num
done
echo $a
스크립트 끝에서 얻는 것은 덧셈 산술 연산의 결과 대신 123+234+432+...입니다.
답변1
산술 평가 구문이 잘못되었습니다. 다음 중 하나를 사용하십시오(첫 번째는 이식성이 매우 높지만 느리고, 두 번째는 Bourne 쉘 및 Almquist 쉘의 초기 버전을 제외하고 POSIX이며 이식 가능하며, 마지막 세 개는 필수 또는 ksh
) .bash
zsh
a=`expr "$a" + "$num"`
a=$(($a+$num))
((a=a+num))
let a=a+num
((a+=num))
또는 전체 for
루프를 건너뛰고 다음을 수행할 수 있습니다.
wc -l folder/*
또는 합계만 원하는 경우:
cat folder/* | wc -l
또는 zsh 및 해당 mult_ios
옵션을 사용하십시오.
wc -l < folder/*
답변2
이 코드를 사용할 수도 있습니다
a=`expr $a + $num`
echo $a
그리고"$a + $num"에서 + 양쪽에 공백이 있는지 확인하세요.
답변3
답변을 지정해야 합니다.어느 껍질코드가 작동합니다. 예를 들어, Bourne Shell( sh
)에서는 다음 지침만 유효합니다.
a=$((a+num))
a=$(($a+$num))
@manatwork가 나열한 다른 가능성은 Bourne에서도 작동할 수 있습니다.다시껍데기( bash
)
답변4
죄송합니다. 이전 수정사항은 다른 게시물에 대한 것이었습니다. 다음은 원본 스크립트를 약간 수정한 것입니다.
a=0이라고 하자 숫자=0으로 놔두세요 i/* 폴더의 경우 하다 num=`cat$i|화장실-l` a=$(에코 $a+$num|bc) 완벽한 $a를 에코하세요