Android

Bash untuk gelung

Shell Scripting - For Loops

Shell Scripting - For Loops

Isi kandungan:

Anonim

Gelung adalah salah satu konsep dasar bahasa pengaturcaraan. Gelung berguna apabila anda ingin menjalankan beberapa siri arahan berulang kali sehingga keadaan tertentu tercapai.

Dalam bahasa skrip seperti Bash, gelung berguna untuk mengautomasikan tugas berulang.

Terdapat tiga asas gelung yang dibina dalam skrip Bash, untuk gelung, sementara gelung, dan sehingga gelung.

Dalam tutorial ini, kami akan merangkumi asas bagi gelung dalam Bash. Kami juga akan menunjukkan kepada anda cara menggunakan rehat dan meneruskan pernyataan untuk mengubah aliran gelung.

Standard Bash For Loop

Gelung untuk melelong ke atas senarai item dan melaksanakan set perintah yang diberikan.

Bash untuk gelung mengambil bentuk berikut:

for item in do done

Senarai ini boleh menjadi satu siri rentetan yang dipisahkan oleh ruang, pelbagai nombor, output perintah, array, dan sebagainya.

Loop over strings

Dalam contoh di bawah gelung akan melelar ke atas setiap item dalam senarai rentetan, dan element pembolehubah akan ditetapkan pada item semasa.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

Gelung akan menghasilkan output berikut:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

Gelung dari julat nombor

Anda boleh menggunakan ungkapan urutan untuk menentukan julat nombor atau aksara dengan menentukan permulaan dan titik akhir julat. Ungkapan urutan mengambil bentuk berikut:

{START..END}

Dalam contoh di bawah gelung akan berulang melalui semua nombor dari 0 hingga 3.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

Bermula dari Bash 4, juga mungkin untuk menentukan kenaikan apabila menggunakan julat. Ungkapan ini mengambil bentuk berikut:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

Gelung ke atas unsur array

Anda juga boleh menggunakan gelung untuk melaraskan pelbagai elemen:

Dalam contoh di bawah, kita menentukan satu BOOKS susun atur dan meleraikan setiap elemen array.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

C-gaya Bash untuk gelung

Sintaks gaya C untuk gelung mengambil bentuk berikut:

for ((INITIALIZATION; TEST; STEP)) do done

Bahagian INITIALIZATION dilaksanakan hanya sekali apabila gelung bermula. Kemudian, bahagian TEST dinilai. Jika palsu, gelung untuk ditamatkan. Sekiranya TEST itu benar, arahan di dalam badan untuk gelung dilaksanakan dan bahagian STEP dikemas kini.

Dalam kod berikut, bintang gelung dengan menginisialisasi i = 0 , maka sebelum setiap pemeriksaan mengulang jika i ≤ 10 . Jika benar ia mencetak nilai semasa i dan i dengan 1 ( i++ ) sebaliknya gelung tamat.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

Gelung akan bergerak 1001 kali dan menghasilkan output berikut:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Teruskan dan Teruskan Kenyataan

Istirahat dan meneruskan kenyataan boleh digunakan untuk mengawal pelaksanaan gelung.

Kenyataan Cuti

Kenyataan rehat mengakhiri gelung semasa dan melewati kawalan program kepada pernyataan yang mengikuti kenyataan yang ditamatkan. Ia biasanya digunakan untuk menamatkan gelung apabila keadaan tertentu dipenuhi.

Dalam contoh berikut, kami menggunakan pernyataan jika untuk menamatkan pelaksanaan gelung sebaik item berulang sekarang bersamaan dengan 'Lithium'.

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

Teruskan Kenyataan

Kenyataan yang berterusan keluar dari lelaran semasa gelung dan lulus kawalan program ke lelaran seterusnya gelung.

Dalam contoh berikut, kita sedang melayang melalui pelbagai nombor dan apabila item berulang sekarang bersamaan dengan '2', kenyataan berterusan akan menyebabkan pelaksanaan akan kembali ke permulaan gelung dan untuk meneruskan dengan lelaran seterusnya.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Bash For Loop Examples

Menamakan semula fail dengan ruang dalam nama fail

Contoh berikut menunjukkan bagaimana untuk menggunakan Bash untuk gelung untuk menamakan semula semua fail dalam direktori semasa dengan ruang dalam nama-nya dengan menggantikan ruang kepada garis bawah.

for file in *\ *; do mv "$file" "${file// /_}" done

Mari kita memecahkan baris kod demi baris:

  • Baris pertama mencipta gelung dan meleret melalui senarai semua fail dengan ruang dalam namanya. Ungkapan *\ * mencipta senarai. Baris kedua terpakai untuk setiap item senarai dan memindahkan fail ke yang baru menggantikan ruang dengan underscore ( _ ). Bahagian ${file// /_} menggunakan pengembangan parameter shell untuk menggantikan corak dalam parameter dengan rentetan. done menunjukkan akhir segmen gelung.

Menukar pelanjutan fail

Contoh berikut menunjukkan cara menggunakan Bash untuk gelung untuk menamakan semula semua fail yang berakhir dengan.jpeg dalam direktori semasa dengan menggantikan pelanjutan fail dari.jpeg ke.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

Mari kita analisa baris kod demi baris:

  • Baris pertama mencipta gelung dan meleret melalui senarai semua fail yang berakhir dengan '.jpeg'. Baris kedua terpakai untuk setiap item senarai dan memindahkan fail ke yang baru menggantikan '.jpeg' dengan '.jpg'. ${file%.jpeg} untuk membuang bahagian '.jpeg' dari nama fail menggunakan pengembangan parameter shell yang done menunjukkan bahagian segmen gelung.

Kesimpulannya

Sekarang anda harus mempunyai pemahaman yang baik mengenai cara menggunakan bash untuk gelung untuk melewati senarai.

terminal gelung bash