나는 이런 일을하고 싶다 :
if cmd1 && cmd2
echo success
else
echo epic fail
fi
어떻게 해야 하나요?
답변1
이는 귀하의 요구 사항을 충족해야 합니다.
cmd1 && cmd2 && echo success || echo epic fail
또는
if cmd1 && cmd2; then
echo success
else
echo epic fail
fi
답변2
질문의 의사코드가 질문 제목과 일치하지 않습니다.
명령 1이 실패할 경우 명령 2를 실행하는 방법을 실제로 알아야 하는 사람이 있는 경우 다음과 같은 간단한 설명을 따르십시오.
cmd1 || cmd2
: 이 명령은 실행되며cmd1
, 실패할 경우에도 실행됩니다.cmd2
cmd1 && cmd2
: 실행됩니다cmd1
. 성공하면 실행됩니다.cmd2
cmd1 ; cmd2
: 실행 실패 또는 성공 여부에 관계없이 실행cmd1
된 다음 실행됩니다 .cmd2
cmd1
완전성을 위해 귀하의 예에서는 then
키워드를 놓쳤습니다. 표시하려는 코드는 다음과 같이 작성됩니다.
if cmd1 && cmd2; then echo success; else echo epic fail; fi
이는 다음과 같습니다.
((cmd1 && cmd2) && echo success) || echo epic fail
괄호는 선택사항이므로왼쪽 연관성.
이 코드는 cmd2
성공적으로 실행되는 경우에만 실행되며 cmd1
, 그렇지 않으면 실패가 직접 에코됩니다.
답변3
Petr Uzel의 말이 맞습니다. 하지만 $?라는 마법을 사용할 수도 있습니다.
$? 마지막으로 실행된 명령의 종료 코드를 저장합니다. 이를 사용하면 스크립팅을 매우 유연하게 할 수 있습니다.
이 질문은 이 주제와 다소 관련이 있습니다.$? 사용에 대한 모범 사례 배쉬에서?.
cmd1
if [ "$?" -eq "0" ]
then
echo "ok"
else
echo "Fail"
fi
그런 다음 원할 경우 다양한 종료 코드에 반응하고 다양한 작업을 수행할 수도 있습니다.