Tidak ada gotodi bash.
Berikut adalah beberapa solusi kotor menggunakan trapyang melompat hanya mundur :)
#!/bin/bash -e
trap '
echo I am
sleep 1
echo here now.
' EXIT
echo foo
goto trap 2> /dev/null
echo bar
Keluaran:
$ ./test.sh
foo
I am
here now.
Ini tidak boleh digunakan dengan cara itu, tetapi hanya untuk tujuan pendidikan. Inilah mengapa ini bekerja:
trapmenggunakan penanganan pengecualian untuk mencapai perubahan dalam aliran kode. Dalam hal trapini menangkap apa pun yang menyebabkan skrip EXIT. Perintah gototidak ada, dan karenanya mengeluarkan kesalahan, yang biasanya akan keluar dari skrip. Kesalahan ini ditangkap trap, dan2>/dev/null menyembunyikan pesan kesalahan yang biasanya ditampilkan.
Implementasi goto ini jelas tidak dapat diandalkan, karena perintah yang tidak ada (atau kesalahan lainnya, dengan cara itu), akan menjalankan perintah perangkap yang sama. Khususnya, Anda tidak dapat memilih label mana yang akan dikunjungi.
Pada dasarnya dalam skenario nyata Anda tidak memerlukan pernyataan goto, itu berlebihan karena panggilan acak ke tempat yang berbeda hanya membuat kode Anda sulit dimengerti.
Jika kode Anda dipanggil berkali-kali, maka pertimbangkan untuk menggunakan loop dan mengubah alur kerjanya untuk menggunakan continuedan break.
Jika kode Anda berulang, pertimbangkan untuk menulis fungsi dan memanggilnya sebanyak yang Anda inginkan.
Jika kode Anda perlu melompat ke bagian tertentu berdasarkan nilai variabel, maka pertimbangkan untuk menggunakan casepernyataan.
Jika Anda dapat memisahkan kode panjang Anda menjadi potongan-potongan kecil, pertimbangkan untuk memindahkannya ke file terpisah dan memanggilnya dari skrip induk.
gotodi bash (setidaknya katanyacommand not founduntuk saya). Mengapa? Kemungkinan ada cara yang lebih baik untuk melakukannya.