Ortak bir yol:
die() {
IFS=' ' # make sure "$*" is joined with spaces
# output the arguments if any on stderr:
[ "$#" -eq 0 ] || printf '%s\n' "$*" 1>&2
exit 1
}
o zaman böyle kullanın:
mkdir -p some/path || die "mkdir failed with status $?"
Veya çıkış durumunu içermesini istiyorsanız şu şekilde değiştirebilirsiniz:
die() {
last_exit_status=$?
IFS=' '
printf '%s\n' "FATAL ERROR: $* (status $last_exit_status)" 1>&2
exit 1
}
ve sonra kullanmak biraz daha kolay:
mkdir -p some/path || die "mkdir failed"
Başarısız olduğunda, mkdir
büyük olasılıkla zaten bir hata mesajı yayınlamış olur, böylece ikincisi gereksiz olarak görülebilir ve şunları yapabilirsiniz:
mkdir -p some/path || exit # with the same (failing) exit status as mkdir's
mkdir -p some/path || exit 1 # with exit status 1 always
(veya die
yukarıdaki ilk değişkeni bağımsız değişken olmadan kullanın )
Daha command1 || command2
önce görmemeniz command1
durumunda çalışır ve command1
başarısız olursa çalışır command2
.
Böylece "dizini oluştur veya öl" gibi okuyabilirsiniz.
Örneğiniz şöyle görünecektir:
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
some_command || die "some_command failed"
Ya dies
da ana kodun daha açık olması için sağdaki daha fazla hizalayabilirsiniz .
mkdir -p some/path || die "mkdir failed"
cd some/path || die "cd failed"
some_command || die "some_command failed"
Veya komut satırları uzun olduğunda aşağıdaki satırda:
mkdir -p some/path ||
die "mkdir failed"
cd some/path ||
die "cd failed"
some_command ||
die "some_command failed"
Ayrıca, adı some/path
birden çok kez kullanacaksanız, yazmaya devam etmek zorunda kalmamanız için bir değişkende saklayın ve gerekirse kolayca değiştirebilirsiniz. Değişken argümanlarını komutlara --
iletirken, argüman ile başlarsa argümanın bir seçenek olarak alınmaması için seçenek sınırlayıcıyı kullandığınızdan emin olun -
.
dir=some/path
mkdir -p -- "$dir" || die "Cannot make $dir"
cd -P -- "$dir" || die "Cannot cd to $dir"
some_command || die "Cannot run some_command"