마침내

마침내

다음 bash 코드를 고려하십시오.

i=1
while [ $i -le 50 ]
do
    echo $i
    i=$(($i+1))     #  <-------
done

날카로운 선에서 얼마나 많은 괄호를 사용하는 것이 왜 중요한가요? 이렇게 작성하면 코드가 작동하지 않습니다.

i=$($i+1)

왜 그럴까요?

답변1

물론 이것은 완전히 다릅니다. 우리는 집중한다내장된 기능만:

$((...))산술 대체입니다. 산술 연산이 완료되면 전체 내용이 표현식의 값으로 대체됩니다. 바라보다http://mywiki.wooledge.org/ArithmeticExpression


((...))표현식이 0이 아니면 종료 상태 0을 반환하거나 표현식이 0이면 1을 반환하는 산술 명령입니다. 부작용(할당)이 필요한 경우 "let"의 동의어로도 사용됩니다. 바라보다http://mywiki.wooledge.org/ArithmeticExpression


명령 대체: "$(cmd "foo bar")""cmd" 명령이 "foo bar" 인수와 함께 실행되고 "$(..)"출력으로 대체됩니다. 바라보다http://mywiki.wooledge.org/BashFAQ/002그리고http://mywiki.wooledge.org/CommandSubstitution


마침내

다음보다 더 좋고/간단한 줄을 작성할 수 있습니다 i=$(($i+1)).

((i++))

을 위한 loop:

for i in {1..50}; do ...

또는

for ((i=1; i<50; i++)); do ...

관련 정보