GNU/Linux >> Belajar Linux >  >> Linux

Apakah ada pernyataan goto di bash?

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

Linux
  1. Cara Menggunakan if else Conditionals Statement di Bash Script

  2. 4 Contoh Pernyataan Bash If ( If then fi, If then else fi, If elif else fi, Nested if )

  3. Bash array dan subskrip negatif, ya atau tidak?

  1. Skrip bash:Pindah dari operator backtick ke $ kurung

  2. Pernyataan Bash If-Else Dengan Contoh

  3. 5 Contoh Pernyataan Kasus Bash

  1. Bash if elif else Pernyataan:Tutorial Komprehensif

  2. Bash/sh pernyataan 'jika lain'

  3. BASH:kirim sinyal SIGTSTP (ctrl+z)