출처 : https://stackoverflow.com/questions/20449680/boolean-operators-a-o-in-bash
Bash에서 Boolean 연산자( &&, -a, ||, -o )
Unix 연산자 &&
, -a
, ||
, -o
사이에 차이점을 설명해 주실수 있으신가요?
2가지 타입의 사용법에 제약은 무엇인가요?
간단히 &&
와 ||
연산자는 조건에서 flag를 사용할 때만 사용되나요?
다음처럼 :
[ "$1" = "yes" ] && [ -r $2.txt ]
와
[ "$1" = "yes" -a $2 -lt 3 ]
입니다.
2개의 답변 중 1개의 답변
경험상 법칙 : 대괄호 안에 -a
및 -o
를 사용하고 밖에서는 &&
및 ||
를 사용합니다.
shell 구문과 [
명령의 구문 사이의 차이점을 이해하는 것이 중요합니다.
&&
및||
는 shell 연산자입니다. 두 명령의 결과를 결합하는 데 사용됩니다. 그것들은 shell 구문이기 때문에 특별한 구문적 의미가 있으며 명령의 인수로 사용할 수 없습니다.[
는 특별한 구문이 아닙니다. 실제로 이름[
또는test
로 알려진 명령입니다.[
는 일반적인 명령이므로-a
및-o
를 and 및 or 또는 연산자로 사용합니다.&&
및||
는 명령으로 볼 수 없는 쉘 구문이기 때문에 (안에서는) 사용할 수 없습니다.
하지만 기다리십시오! Bash에는 [[ ]]
형식의 더 멋진 테스트 구문이 있습니다. 이중 대괄호를 사용하면 정규식 및 와일드 카드와 같은 항목에 액세스 할 수 있습니다. 대괄호 안에서 &&
, ||
, <
및 >
와 같은 쉘 연산자를 자유롭게 사용할 수도 있습니다. [
와 달리 이중 괄호 형식은 특수 쉘 구문이기 때문입니다. Bash는 [[
자체를 파싱하여 [[$ foo == 5 && $ bar == 6]]
와 같은 것을 쓸 수 있습니다.
'리눅스 shell' 카테고리의 다른 글
CentOS 6 ca-certificates 패키지 수동 설치 (2) | 2021.11.09 |
---|---|
crontab이 사용할 환경 변수를 어디에서 설정할 수 있습니까? (0) | 2021.10.12 |
파일 자체를 정렬하는 방법 (0) | 2021.08.04 |
Rsync (원격 동기화): 리눅스에서 Rsync 명령의 10가지 실용적인 예시 (0) | 2021.08.03 |
bash 스크립트에서 curl 호출시 변수를 어떻게 사용할 수 있을까요? (0) | 2021.06.21 |