변수를 계산하여 다른 변수로 출력


10

내가 아는 유일한 계산기는 bc입니다. 1변수 에 추가 하고 다른 변수로 출력 하고 싶습니다 .

nextnum파일에서 문자열을 계산 하여 변수를 얻었습니다 .

nextnum=`grep -o stringtocount file.tpl.php | wc -w`

nextnum값이 이라고합시다 1. 로 추가 1하면이 2됩니다. 계산하려면 다음을 실행하십시오.

rownum=`$nextnum+1 | bc`

그러나 오류가 발생했습니다 :

1+1: command not found

방금 계산 부분에서 실패했습니다. 백틱 변경을 시도했지만 여전히 작동하지 않습니다. 변수를 계산하고 다른 변수로 출력하는 방법을 모릅니다.


답변:


21

내부의 하위 문자열 ` `은 유효한 명령 자체 여야합니다.

rownum=`echo $nextnum+1 | bc`

그러나 다음 $( )대신 사용 하는 것이 좋습니다 ` `.

rownum=$(echo $nextnum+1 | bc)

그러나 bc쉘은 정수 산술 을 할 수 있습니다 .

rownum=$((nextnum+1))

또는 더 간단 bash하고 ksh:

((rownum=nextnum+1))

8

bash에서 내장 산술을 사용할 수도 있습니다.

rownum=$((nextnum+1))

약간 더 빠를 것입니다.


2

Bourne-Shell 만 사용 가능했던 이전 시대에 수행했던 방식을 언급하기 위해 제안 된 솔루션을 절대적으로 올 바르고 완성하십시오. 그것이 선호하는 방식입니다.

rownum=`expr $nextnum + 1` 

1

나는 (앞서 언급했듯이) 사용 rownum=$((nextnum+1))하거나 ((rownum=nextnum+1))표준 명령을 선호한다면 let 명령을 사용할 수 있습니다.let rownum=$nextnum+1


1
let"표준 명령"을 호출 하는 것은 매우 잘못된 것입니다. $((…))표준 (POSIX) 구문 인 반면 letksh (및 bash, zsh) 확장명입니다.
Gilles 'SO- 악마 그만
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.