programing tip

Bash에서 if 문 산술을 어떻게 수행합니까?

itbloger 2020. 12. 15. 08:16
반응형

Bash에서 if 문 산술을 어떻게 수행합니까?


다음과 같이하고 싶습니다.

if [ $1 % 4 == 0 ]; then
...

그러나 이것은 작동하지 않습니다.

대신 무엇을해야합니까?


read n
if ! ((n % 4)); then
    echo "$n divisible by 4."
fi

(( ))연산자 C로서 연산 식을 계산하고, 부울 창을 갖는다.

따라서 (( 0 ))거짓이고 (( 1 ))참입니다. [1]

$(( ))연산자는 C에게 산술 식을 확장, 대신 참 /의 거짓을 반환하는 대신 값을 반환합니다. 따라서 다음과 같은 경우 출력을 테스트 할 수 있습니다 $(( )). [2]

[[ $(( n % 4 )) == 0 ]]

그러나 이것은 다음과 같습니다 if (function() == false). 따라서 더 간단하고 관용적 인 테스트는 다음과 같습니다.

! (( n % 4 ))

[1] : 최신 bash는 컴퓨터 intmax_t크기 까지 숫자를 처리합니다 .

[2] : $내부 (( ))변수를 역 참조하므로 내부에 놓을 수 있습니다 .


a=4
if [ $(( $a % 4 )) -eq 0 ]; then                                
     echo "I'm here"
fi

단일 대괄호 ( [..])는 일부 테스트에서 작동하지 않습니다. 이중 대괄호 ( [[...]])로 시도 하고 mod를 묶어 연산자를 올바르게 ((..))평가하십시오 %.

if [[ $(( $1 % 4 )) == 0 ]]; then

자세한 내용은 여기 :
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_02.html


이것은 당신을 위해 일할 수 있습니다.

((a%4==0)) && echo "$a is divisible by 4" || echo "$a is not divisible by 4"

또는 더 간결하게 :

((a%4)) && echo "$a is not divisible by 4" || echo "$a is divisible by 4"

참조 URL : https://stackoverflow.com/questions/8304005/how-do-i-do-if-statement-arithmetic-in-bash

반응형