GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Ekspansi Bash Brace:6 Contoh Ekspresi Ekspansi dalam Kawat Gigi

Ekspansi Bash Shell

Salah satu operasi shell ketika menganalisis input adalah ekspansi Shell. Bash menyediakan berbagai jenis ekspansi. Dalam artikel ini, mari kita tinjau ekspansi penting — “Ekspansi penjepit”.

Artikel ini adalah bagian dari seri Tutorial Bash kami yang sedang berlangsung.

Ekspansi Penjepit

Ekspansi penjepit digunakan untuk menghasilkan string arbitrer. Perluasan kurung memungkinkan Anda membuat beberapa argumen baris perintah yang dimodifikasi dari satu argumen. String yang ditentukan digunakan untuk menghasilkan semua kemungkinan kombinasi dengan preamble dan postscript opsional di sekitarnya. Pembukaan diawali dengan setiap string yang terdapat dalam kurung kurawal, dan postscript kemudian ditambahkan ke setiap string yang dihasilkan, meluas dari kiri ke kanan.

$ echo last{mce,boot,xorg}.log
lastmce.log lastboot.log lastxorg.log

where last is Preamble and .log is the postscript

Pernyataan gema di atas menghindari Anda untuk menentukan tiga file log secara terpisah. Jika Anda ingin melihat konten log boot terakhir, log mce, dan log xorg, Anda dapat menggunakan ekspansi penjepit seperti yang ditunjukkan pada pernyataan gema di atas.

1. Contoh untuk Pencadangan menggunakan ekspansi brace

$ cat bkup.sh
set -x # expand the commands
da=`date +%F`
cp $da.log{,.bak}

$ ./bkup.sh
++ date +%F
+ da=2010-05-28
+ cp 2010-05-28.log 2010-05-28.log.bak

Dalam skrip cadangan di atas, ia menyalin file log tanggal saat ini dengan ekstensi .bak. Elemen pertama kosong di dalam kurung kurawal, jadi elemen pertama hanya akan memiliki pembukaan.

2. Contoh untuk Restore menggunakan ekspansi brace

$ cat restore.sh
set -x # expand the commands
da=`date +%F`
cp $da.log{.bak,}

$ ./restore.sh
++ date +%F
+ da=2010-05-28
+ cp 2010-05-28.log.bak 2010-05-28.log

Dalam skrip pemulihan, elemen pertama dalam parameter adalah .bak sedangkan elemen kedua kosong.

Juga, lihat artikel kami sebelumnya tentang fungsi bash shell untuk bacaan tambahan.

3. Contoh Brace Expansion tanpa preamble dan postscript

Jika tidak ada preamble dan postscript, itu hanya memperluas elemen yang diberikan dalam kurung.

$ cat expand.sh
echo {oct,hex,dec,bin}

$ ./expand.sh
oct hex dec bin

Tanpa preamble opsional dan string postscript, hasilnya hanyalah daftar spasi dari string yang diberikan

Perluasan untuk Rentang

Ekspansi penjepit juga memperluas urutan. Urutan dapat berupa bilangan bulat atau karakter.

4. Contoh untuk Integer dan urutan karakter

$ cat sequence.sh
cat /var/log/messages.{1..3}
echo {a..f}{1..9}.txt

$ ./sequence.sh
May  9 01:18:29 x3 ntpd[2413]: time reset -0.132703 s
May  9 01:22:38 x3 ntpd[2413]: synchronized to LOCAL(0), stratum 10
May  9 01:23:44 x3 ntpd[2413]: synchronized to
May  9 01:47:48 x3 dhclient: DHCPREQUEST on eth0
May  9 01:47:48 x3 dhclient: DHCPACK from 23.42.38.201
..
..
a1.txt a2.txt a3.txt a4.txt b1.txt b2.txt b3.txt b4.txt c1.txt c2.txt c3.txt c4.txt

Perintah cat pertama, memperluas pesan.1,pesan.2 dan pesan.3 dan menampilkan konten. dan dalam pernyataan gema berikutnya, karakter dan urutan bilangan bulat digabungkan dan digunakan.

Urutan dengan nilai kenaikan

Dalam ekspansi penjepit kshell, Anda dapat menggunakan nilai kenaikan, untuk menghasilkan urutan.

Syntax:
<start>..<end>..<incr>

incr adalah numerik. Anda dapat menggunakan bilangan bulat negatif, tetapi tanda yang benar disimpulkan dari urutan awal dan akhir.

5. Contoh penggunaan Increment in sequence

$ ksh
$ echo /var/log/messages.{1..7..2}
/var/log/messages.1 /var/log/messages.3 /var/log/messages.5 /var/log/messages.7
$

Dengan menggunakan ini, Anda dapat melihat file log hari alternatif.

Perangkap dalam ekspansi Brace

Perluasan kurung kurawal tidak memperluas variabel bash, karena ekspansi kurung kurawal adalah langkah pertama dari ekspansi shell, variabel akan diperluas nanti.

6. Contoh untuk Variabel dalam ekspansi

Jika Anda melihat output dari dua pernyataan for berikut, Anda dapat mengidentifikasi perangkap di atas.

$ cat var_seq.sh
# Print 1 to 4 using sequences.
for i in {1..4}
do
        echo $i
done
start=1
end=4

# Print 1 to 4 using through variables
echo "Sequences expressed using variables"
for i in {$start..$end}
do
        echo $i
done

$ ./var_seq.sh
1
2
3
4
Sequences expressed using variables
{1..4}

Linux
  1. Apakah `~#` Sebuah Ekspansi Tilde Dari Bash?

  2. Pernyataan Bash If-Else Dengan Contoh

  3. Tutorial Status Keluar Bash Shell dengan Contoh Praktis

  1. Ekspansi &Variabel Bash Brace?

  2. The Magic ~:Ekspansi Bash Tilde dengan 5 Contoh

  3. 15 Contoh Ekspansi Sejarah Bash Linux Yang Harus Anda Ketahui

  1. Tutorial Penyelesaian Bash yang Mudah??

  2. Tutorial Bash Array Terbaik dengan 15 Contoh

  3. 6 Contoh Ekspresi Kondisional Bash ( -e, -eq, -z, !=, [, [[ ..)