스크립트에서 산술 변수를 추가하는 방법 in folder/* do

폴더에 포함 된 여러 파일의 줄 크기를 누적하고 싶습니다. 다음 스크립트를 작성했습니다.

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 + …이며 산술 연산의 결과가 아닙니다.



답변

산술 평가 구문이 잘못되었습니다. 다음 중 하나를합니다 (먼저 매우 휴대용하지만 천천히, 두 번째는 POSIX 및 Bourne 쉘를 제외하고 휴대용과 Almquist 쉘의 이전 버전, 마지막 세 가지가 필요하다 사용 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/*

답변

이 코드를 사용할 수도 있습니다

    a=`expr $a + $num`
    echo $a

“$ A + $ NUM”+ IN BOTH SIDES OF ON 공간이 있는지를 MAKE


답변

변수 유형을 먼저 선언 할 수 있습니다.

    declare -i a=0
    declare -i num=0

답변

죄송합니다. 이전 수정 사항이 다른 게시물에 대한 것이 었습니다. 다음은 원본 스크립트를 약간만 수정 한 것입니다.

a = 0하자
num = 0
폴더 / *의 i
해야 할 것
        num =`cat $ i | 화장실 -l`
        a = $ (에코 $ a + $ num | bc)
끝난
에코 $ a

답변

대답 은 코드가 유효한 을 지정해야 합니다. 예를 들어 bourne Shell ( sh)에서는 다음 지침 만 유효합니다.

a=$((a+num))
a=$(($a+$num))

@manatwork 나열하는 다른 가능성은 본 쉘에 유효 할 수 있지만 다시 (쉘 bash)


답변

나는 이것을 이렇게 만든다

MY_VARIABLE=$((num1+num2))