Tidak, tidak ada; lihat §3.2.4 "Perintah Gabungan" di Panduan Referensi Bash untuk informasi tentang struktur kontrol yang lakukan ada. Secara khusus, perhatikan penyebutan break
dan continue
, yang tidak sefleksibel goto
, tetapi lebih fleksibel di Bash daripada di beberapa bahasa, dan dapat membantu Anda mencapai apa yang Anda inginkan. (Apa pun yang Anda inginkan . . .)
Jika Anda menggunakannya untuk melewati bagian dari skrip besar untuk debugging (lihat komentar Karl Nicoll), maka if false bisa menjadi pilihan yang baik (tidak yakin apakah "false" selalu tersedia, bagi saya itu ada di /bin/false) :
# ... Code I want to run here ...
if false; then
# ... Code I want to skip here ...
fi
# ... I want to resume here ...
Kesulitan datang ketika saatnya untuk merobek kode debug Anda. Konstruk "jika salah" cukup mudah dan mudah diingat, tetapi bagaimana Anda menemukan fi yang cocok? Jika editor Anda mengizinkan Anda untuk memblokir indentasi, Anda dapat membuat indentasi blok yang dilewati (maka Anda ingin mengembalikannya setelah selesai). Atau komentar pada baris fi, tetapi itu harus menjadi sesuatu yang akan Anda ingat, yang saya duga akan sangat bergantung pada pemrogram.
Ini memang berguna untuk beberapa kebutuhan debug atau demonstrasi.
Saya menemukan bahwa solusi Bob Copeland http://bobcopeland.com/blog/2012/10/goto-in-bash/ elegant:
#!/bin/bash
# include this boilerplate
function jumpto
{
label=$1
cmd=$(sed -n "/$label:/{:a;n;p;ba};" $0 | grep -v ':$')
eval "$cmd"
exit
}
start=${1:-"start"}
jumpto $start
start:
# your script goes here...
x=100
jumpto foo
mid:
x=101
echo "This is not printed!"
foo:
x=${x:-10}
echo x is $x
menghasilkan:
$ ./test.sh
x is 100
$ ./test.sh foo
x is 10
$ ./test.sh mid
This is not printed!
x is 101