expr을 이용한 간단한 계산을 하려는데 잘 안됩니다.

alloveme1의 이미지

# i=2
# i='expr $i + 2'
# echo $i
하면 4가 나와야 하는 걸로 알고 있는데
expr $i + 2
가 출력됩니다.

# i=2
# expr $i + 2
하면 4가 나옵니다.

정말 궁금합니다.

리눅스 레드햇 9.0 배포판을 사용 중이며, 커널 버젼은 2.4.20-8입니다.

Darkcircle의 이미지

alloveme1 wrote:
# i=2
# i='expr $i + 2'
# echo $i
하면 4가 나와야 하는 걸로 알고 있는데
expr $i + 2
가 출력됩니다.

# i=2
# expr $i + 2
하면 4가 나옵니다.

정말 궁금합니다.

리눅스 레드햇 9.0 배포판을 사용 중이며, 커널 버젼은 2.4.20-8입니다.

expr $i+2가 문자열로 취급되나보죠 :)
자바스크립같은 경우도 겹따옴표나 그냥따옴표나 똑같은 효과를 보죠??
그거랑 좀 비슷하다고 보시면 되겠나요 . . . :)

---------------------------------------------------------------
폐인이 되자 (/ㅂ/)

pynoos의 이미지

작은 따옴표가 아니라 역따옴표 (back tick)을 사용해야합니다.

sunyzero의 이미지

pynoos 님이 말씀하신대로 역따옴표(back quote)를 쓰는 것은 문자열을 명령어로 바꿔주는 역할을 합니다. (키보드의 보통 ESC아래 있습니다)
그러나 읽는데 헷갈려서 역따옴표가 싫다면 ( ) 괄호로 묶으셔도 됩니다. ( ) 괄호는 문자열을 실행명령으로 바꿔줍니다.

따라서

i=`expr $i + 3`
i=$(expr $i + 3)

은 같습니다.

이것보다 더 간단한 방법으로 (( )) 이나 let을 쓰는 방법도 있습니다.

i=$(($i+3))
let i+=3

이런것도 가능하죠. 보통 let 은 expr에서 지원하지 못하는 단항연산인 ++, -- 도 지원하므로 편리하답니다.

========================================
* The truth will set you free.

alloveme1의 이미지

작은 따옴표가 아니라 역따옴표(backquote)였군요...
다시 한번 답변 감사드립니다...