GNU/Linux >> Belajar Linux >  >> Linux

Tujuan Kata Kunci "lakukan" Di Bash For Loops?

Apa tujuan dari do kata kunci di Bash for sintaks lingkaran? Bagi saya, itu terasa berlebihan.

for i in `seq 1 2`; do echo "hi"; done

Mengapa sintaksnya tidak seperti ini?

for i in `seq 1 2`; echo "hi"; done

Saya yakin ya mengisi sebuah tujuan. Saya hanya ingin belajar.

Jawaban yang Diterima:

Perhatikan bahwa sintaks tersebut diwarisi dari shell Bourne.

Setelah nama variabel, Anda dapat memiliki in agar daftar elemen diberikan secara eksplisit, atau do , untuk mengulang parameter posisi.

for i in 1 2 3
do
  echo "$i"
done

Atau

set 1 2 3
for i do
  echo "$i"
done

Memiliki do dalam kedua kasus (bahkan jika itu tidak sepenuhnya diperlukan dalam yang pertama) membuat sintaks yang lebih konsisten. Ini juga konsisten dengan while /until loop di mana do diperlukan.

while
  cmd1
  cmd2
do
  cmd3
  cmd4
done

Anda memerlukan do untuk memberitahu di mana daftar kondisi perintah berakhir.

Perhatikan bahwa shell Bourne tidak mendukung for i; do . Sintaks itu juga bukan POSIX hingga standar edisi 2016 (for i do selalu POSIX; lihat bug grup Austin terkait).

zsh memiliki beberapa bentuk singkatan seperti:

for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i

Atau dukungan untuk lebih dari satu variabel:

for i j (1 a 2 b) echo $i $j

(meskipun Anda tidak dapat menggunakan in atau do sebagai nama variabel sebagai pengganti j di atas).

Meskipun jarang didokumentasikan, kebanyakan shell mirip Bourne (Bourne, ksh, bash, zsh, bukan ash atau yash ) juga mendukung:

for i in 1 2 3; { echo "$i";}

Cangkang Bourne, ksh dan zsh (tetapi bukan bash ) juga mendukung:

for i { echo "$i"; }

Sementara bash , ksh dan zsh (tetapi bukan shell Bourne) mendukung:

for i; { echo "$i"; }

Semua (Bourne, bash , ksh , zsh ) dukungan:

for i
{ echo "$i";}

ksh93 , bash , zsh dukungan:

for ((i=1;i<=3;i++)) { echo "$i"; }

Linux
  1. Dapatkan Halaman Man Individu Untuk Perintah Bash Builtin??

  2. Tujuan .bashrc Dan Bagaimana Cara Kerjanya?

  3. Apakah Mungkin Penyelesaian Bash Untuk Berputar Melalui Alternatif?

  1. Kiat bash untuk sehari-hari di baris perintah

  2. Bash Echo Baris Perintah Dieksekusi Di Baris Perintah Itu Sendiri (bukan Dalam Script)?

  3. Cetak tanggal untuk hari Senin minggu ini (dalam bash)

  1. Dua kegunaan hebat untuk perintah cp:pintasan Bash

  2. Skrip Linux:3 cara untuk while loop di Bash

  3. Alasan Bash Shell Tidak Memperingatkan Anda Tentang Aritmatika Overflow Dll?