스크립트에 산술 변수를 추가하는 방법

스크립트에 산술 변수를 추가하는 방법

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

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) .bashzsh

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를 에코하세요

관련 정보