쉘 스크립트에서 test 명령 대신 쉽게 숫자

2291 단어 ShellScriptBash

test 명령



bash로 숫자를 비교할 때 보통 test 명령을 사용합니다.
그러나 이 명령의 비교 옵션은 전혀 직관적이지 않고 매우 이해하기 어렵습니다.


옵션
설명
보충


-eq
같으면 참
equal

-ne
같지 않으면 참
not equal

-lt
작으면 참
less than

-le
이하라면 참
less than or equal

-gt
더 크면 참
greater than

-ge
이상이라면 참
greater than or equal


※ 인용 : Bash의 if 문 (test 문) 옵션을 정리해 보았습니다.

이것을 기억하는 것은 분명히 말하고 귀찮습니다.
다른 언어처럼 <= 또는 > 를 사용할 수 없습니까?

이중 괄호 사용



Archiso 의 소스 코드를 읽고 우연히 발견되었습니다.
a=1000
if (( a <= 1000 )); then
    echo "aは1000以下です。"
fi

이런 글을 쓸 수 있어요()
Bash에서 $(( a + 10 )) 와 같이 변수에 $ 는 필요없는 것 같습니다.

산술 전개의 일종인가 Bash의 독자적인 구문인가 상세한 것은 모릅니다...
그래서 누군가 자세하게 알고 계신 분이라면 알려주세요.

추가



코멘트로 가르쳐 주었습니다만, POSIX에는 없는 Bash나 Zsh등의 독자 기능인 것 같습니다.
쉐반에서 #!/usr/bin/env bash 를 지정하고 있으면 문제 없다고 생각합니다만, 임베디드 환경등의 특수한 경우는 사용하지 않는 편이 좋을 것 같습니다.
hoge=200
if (( hoge == 200)); then
    echo "hogeは200です"
else
    echo "hogeは200ではありません"
fi

Dash에서 실행하면 오류가 발생했습니다. 정상적인 비교는 불가능합니다.

좋은 웹페이지 즐겨찾기