it-swarm-id.com

Bash: jalankan perintah jika perintah gagal

Saya ingin melakukan sesuatu seperti ini:

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

Bagaimana saya harus melakukannya?

51
michelemarcon

Ini harus melakukan apa yang Anda butuhkan:

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

atau

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

Petr Uzel sangat cocok tetapi Anda juga bisa bermain dengan sihir $ ?.

$? memegang kode keluar dari perintah terakhir yang dijalankan, dan jika Anda menggunakan ini, Anda dapat menulis skrip Anda cukup fleksibel.

Pertanyaan ini sedikit menyentuh topik ini, Praktik terbaik untuk menggunakan $? Dalam bash? .

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

Kemudian Anda juga dapat bereaksi terhadap kode keluar yang berbeda dan melakukan hal-hal yang berbeda jika Anda suka.

25
Johan

Kode semu dalam pertanyaan tidak sesuai dengan judul pertanyaan.

Jika ada yang perlu benar-benar tahu cara menjalankan perintah 2 jika perintah 1 gagal, ini adalah penjelasan sederhana:

  • cmd1 || cmd2: Ini akan menjalankan cmd1, dan jika gagal ia akan berjalan cmd2
  • cmd1 && cmd2: Ini akan menjalankan cmd1, dan jika berhasil ia akan berjalan cmd2
  • cmd1 ; cmd2: Ini akan menjalankan cmd1, dan kemudian itu akan berjalan cmd2, terlepas dari kegagalan atau kesuksesan menjalankan cmd1.