it-swarm-tr.com

Bash: komut başarısız olursa komutu çalıştır

Böyle bir şey yapmak istiyorum:

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

Bunu nasıl yapmalıyım?

51
michelemarcon

Bunlar ihtiyacınız olanı yapmalıdır:

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

veya

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

Petr Uzel nokta ama sihirli $? İle de oynayabilirsiniz.

, $? son yürütülen komuttan çıkış kodunu tutar ve bunu kullanırsanız komut dosyalarınızı oldukça esnek yazabilirsiniz.

Bu sorular bu konuya biraz dokunuyor, bash'da $? Kullanmak için en iyi uygulama .

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

Daha sonra farklı çıkış kodlarına tepki verebilir ve isterseniz farklı şeyler yapabilirsiniz.

25
Johan

Sorudaki sahte kod, sorunun başlığına karşılık gelmiyor.

Eğer komut 1 başarısız olursa kimsenin komut 2'yi nasıl çalıştıracağını gerçekten bilmesi gerekiyorsa, bu basit bir açıklamadır:

  • cmd1 || cmd2: Bu işlem cmd1 Ve başarısızlık durumunda cmd2
  • cmd1 && cmd2: Bu işlem cmd1 Ve başarılı olması durumunda cmd2
  • cmd1 ; cmd2: Bu işlem cmd1 Çalıştıracak ve sonra cmd2 Çalıştırmanın başarısızlığından veya başarısından bağımsız olarak cmd1 Çalıştıracak.
17