매우 혼란스러운 초보자로서 무슨 일이 일어나고 있습니까?만약에진술과[ ], [[ ]], ( ), ( ( ))
왜?
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개의 다른 if가 무엇인지, 누구인지, 왜 설명할 수 있나요?
..언제 올바르게 사용해야 할까요?
답변1
[
이는 쉘 테스트를 수행하는 이식 가능한 방법인 쉘 테스트 명령(때때로 내장 명령)입니다.
[[
이것은 종종 "확장 테스트"라고 불리며 주로 ksh 및 bash에서만 지원되며 쉘 테스트보다 더 많은 기능을 허용하지만 이식성이 떨어집니다.
(
이것은 전혀 테스트 명령이 아닙니다. 단일 괄호는 하위 쉘을 생성합니다. if 문은 그 뒤에 오는 명령의 반환 코드만 평가하므로 를 사용해도 if ( command ); then
작동하지만 하위 쉘의 반환만 평가합니다.
((
if
이를 통해 산술 관련 조건을 테스트할 때 조합하여 사용할 수 있는 쉘 산술이 가능해집니다.
또한 중첩된 if 문에는 이러한 규칙이 없으므로 모든 중첩 수준에서 이러한 방법을 조합하여 사용할 수 있습니다.