논리 테스트의 출력을 조건으로 한 변수의 한 줄 정의

논리 테스트의 출력을 조건으로 한 변수의 한 줄 정의

프로그래밍 에서는 bash항상 다음과 같은 긴 방법으로 조건 변수를 정의합니다.

dog=1
if [[ $dog -eq 1 ]] ; then
   cow=1
else
   cow=0
fi

이는 분명히 매우 비효율적입니다. 나는 MATLAB다음을 할 수 있습니다

cow=(dog==1)

즉, 5줄이 아닌 1줄입니다. Bash에서도 비슷한 방법이 있나요? 어떤 조언이라도 감사드립니다.

답변1

순수한 정수 기반 할당의 경우 expr ? expr : expr조건부 연산자를 사용할 수 있습니다.

dog=1
cow=$((dog ? 1 : 0))

이는 소와 개의 정수 값에 대해서만 작동하며 0/0이 아닌 값만 테스트합니다(여기서는 개).

dog=2
cow=$((dog ? 42 : 7))

관련 정보