폴더에 포함 된 여러 파일의 줄 크기를 누적하고 싶습니다. 다음 스크립트를 작성했습니다.
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))