[

[

매우 혼란스러운 초보자로서, 무슨 일입니까?만약에진술과[ ], [[ ]], ( ), (( ))

왜?

if [ $jengnr -eq 1 ]; then

맞지만 여기서는 두 배입니다.

if [[ -f "$jdir$object.eng.dat" ]]; then

그런 다음 if 내부에 중첩된 if가 (( ))(내 코드가 아님)이어야 한다는 것을 읽었습니다.

#!/bin/bash
# Nested if statements
if [ $1 -gt 100 ]
then
echo Hey that\'s a large number.
if (( $1 % 2 == 0 ))
then
echo And is also an even number.
fi
fi

하지만 if [[ ]] 문 안에 있는 if 문에서 [[ ]]를 사용했는데 그게 효과가 있었나요?

누가 무엇을, 누구에게, 왜 4가지가 다른지 설명해 주실 수 있나요?

.. 그리고 언제 올바르게 사용해야 할까요?

답변1

[

이는 쉘 테스트 명령(때때로 내장 명령이기도 함)이며 쉘 테스트를 수행하는 이식 가능한 방법입니다.

[[

이것은 종종 "확장 테스트"라고 불리며, 대부분 ksh 및 bash에서만 지원되며 쉘 테스트보다 더 많은 기능을 허용하지만 이식성이 떨어집니다.

(

이것은 전혀 테스트 명령이 아니며 단일 괄호는 하위 쉘을 생성합니다. if 문은 단순히 뒤에 오는 명령의 반환 코드를 평가하므로 를 사용하면 if ( command ); then작동하지만 단순히 하위 쉘의 반환을 평가하는 것입니다.

((

if이는 산술 관련 조건을 테스트할 때 함께 사용할 수 있는 쉘 산술을 허용합니다 .


또한 중첩된 if 문에는 이러한 규칙이 없으므로 모든 중첩 수준에서 이러한 방법을 조합하여 사용할 수 있습니다.

관련 정보