일관성을 유지하기 위해 모든 if 문에서 이중 대괄호 [[]]를 사용하려고했습니다. 그러나 실행하려는 명령의 반환 값을 확인하려고 할 때 문제가 발생했습니다. if 문을 만드는 여러 방법을 테스트 한 후 대괄호없이 만 명령을 실행할 수 있음을 발견했습니다.
다음은 작동하지 않습니다.
if [[ $command ]] ; then
echo "something"
fi
if [[ $(command) ]] ; then
echo "something"
fi
if [[ ${command} ]] ; then
echo "something"
fi
위의 코드는 명령이 실행되지 않은 경우에도 if 루프를 참으로 만듭니다. 위의 코드는 중괄호와 함께 작동하지 않기 때문에 이것을 사용하는 것은 작동하지 않습니다.
[[ $command ]] || echo "failed"
그리고 그것은 서브 쉘에서도 작동하지 않습니다.
다음 작업 :
if $command ; then
echo "something"
fi
if $(command) ; then
echo "something"
fi
대괄호가있는 if 루프에 명령을 배치하는 것이 작동하지 않는 이유는 무엇이며 위의 if 루프가 명령을 실행하지 않았는데도 true를보고하는 이유는 무엇입니까? bash 버전 4.1.9를 사용하고 있습니다. 필자는 이것을 여러 번 시도했으며 if 루프는 위에서 입력 한 것만 큼 간단합니다. 명령이 성공적으로 실행되었는지 확인하고 실행되지 않으면 종료됩니다.
짧은 대답은 다음과 같습니다.
[
그리고 표현을[[
기대하십시오 .
if
기대 명령을 .
속담:
[[ $(command) ]]
본질적으로 실행됩니다.
[[ -n <command_output> ]]
당신이 원하는 것일 수도 있고 아닐 수도 있습니다. 반면에 다음과 같이 말합니다.
$command && echo something || echo other
에코 something
또는 other
명령의 리턴 코드를 기반으로합니다 ( 0
각각 0이 아닌 값).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다