배쉬 : command1이 실패하면 command2를 실행하십시오. 나는 이런 식으로하고 싶다 : if cmd1

나는 이런 식으로하고 싶다 :

if cmd1 && cmd2
echo success
else
echo epic fail
fi

어떻게해야합니까?



답변

이들은 당신이 필요한 것을해야합니다 :

cmd1 && cmd2 && echo success || echo epic fail

또는

if cmd1 && cmd2; then
    echo success
else
    echo epic fail
fi

답변

Petr Uzel이 자리에 있지만 마술 $?로 플레이 할 수도 있습니다.

$? 는 마지막으로 실행 된 명령의 종료 코드를 보유하며, 이것을 사용하면 매우 유연하게 스크립트를 작성할 수 있습니다.

이 질문은이 주제에 약간의 영향을 미칩니다 . bash에서? .

cmd1 
if [ "$?" -eq "0" ]
then
  echo "ok"
else
  echo "Fail"
fi

그런 다음 다른 종료 코드에 반응하고 원하는 경우 다른 작업을 수행 할 수도 있습니다.


답변

질문의 의사 코드가 질문의 제목과 일치하지 않습니다.

명령 1이 실패한 경우 실제로 명령 2를 실행하는 방법을 알아야하는 사람은 다음과 같습니다.

  • cmd1 || cmd2:이 실행 cmd1되며 실패시 실행됩니다.cmd2
  • cmd1 && cmd2:이 실행 cmd1되며 성공하면 실행됩니다.cmd2
  • cmd1 ; cmd2:이 작업이 실행 된 cmd1cmd2실패 또는 실행 성공에 관계없이 실행 cmd1됩니다.