Bash Subshells

Bash Subshells



Kadangkala, ia memerlukan anda menjalankan satu atau lebih arahan atau skrip di latar belakang. Tugas ini boleh dilakukan dengan menulis semua arahan atau skrip ke dalam fail skrip dan melaksanakan fail menggunakan ampersand (&) atau melaksanakan arahan atau skrip ke dalam subkulit daripada shell semasa. Subkulit boleh digunakan untuk melaksanakan berbilang arahan atau skrip dengan melampirkan $() atau kutu belakang (`). Kaedah menggunakan subkulit Bash ditunjukkan dalam tutorial ini.

Contoh Berbeza Subkulit

Cara yang berbeza untuk melaksanakan skrip dalam subkulit ditunjukkan dalam bahagian tutorial ini.

Contoh 1: Laksanakan Subkulit Menggunakan Petikan Tunggal dan Petikan Berganda

Buat fail Bash dengan skrip berikut yang mencetak tarikh dan masa semasa. Seterusnya, pembolehubah $strVal dicetak dengan melampirkan skrip subkulit dalam petikan tunggal dan petikan berganda.







#!/bin/bash

#Cetak arahan `tarikh` dalam subkulit

bergema 'Hari ini adalah `tarikh` '

#Tentukan pembolehubah rentetan

strVal = 'Bash Subshell'

#Cetak pembolehubah dalam subkulit menggunakan petikan tunggal

bergema 'Keluaran petikan tunggal:' '$(echo $strVal)'

#Cetak pembolehubah dalam subkulit menggunakan petikan berganda

bergema 'Keluaran petikan berganda:' ' $(gema $strVal) '

Output berikut muncul selepas melaksanakan skrip. Skrip subkulit dicetak sebagai rentetan apabila ia disertakan dengan petikan tunggal. Skrip subkulit dilaksanakan apabila ia disertakan dengan petikan berganda:





Contoh 2: Cari Semua Fail Sambungan Tertentu Menggunakan Subkulit

Buat fail Bash dengan skrip berikut yang mengambil sambungan fail sebagai input daripada pengguna. Seterusnya, arahan 'ls' dilaksanakan dalam subkulit untuk mencari semua fail sambungan tertentu itu.





#!/bin/bash

bergema -n 'Masukkan nama sambungan fail:'

#Ambil nama sambungan fail yang akan dicari

membaca samb

#Semak nilai input

jika [ [ $ext == '' ] ] ; kemudian

#Cetak mesej ralat

bergema 'Tiada lanjutan diberikan.'

lain

bergema 'Nama fail dengan $ext sambungan:'

#Cetak semua nama fail dengan sambungan yang diberikan

bergema ' $( echo `ls *.$ext` ) '

jadilah

Output berikut muncul selepas melaksanakan skrip dengan input 'txt'. Mengikut output, tiga fail teks wujud di lokasi semasa:



Output berikut muncul selepas melaksanakan skrip dengan nilai kosong:

Contoh 3: Laksanakan Ungkapan Aritmetik dalam Subkulit

Cipta fail Bash dengan skrip berikut di mana pembolehubah dengan nama yang sama digunakan dalam shell utama dan subshell. Operasi aritmetik ditakrifkan dalam kulit utama dan subkulit.

#!/bin/bash

#Tentukan pembolehubah shell induk

nombor = 10

#Cetak hasil berdasarkan pembolehubah shell induk

( ( hasil = $nombor + 5 ) )

bergema 'Jumlah daripada $nombor +5= $hasil '

#Buat pembolehubah subkulit dengan nama yang sama bagi cangkerang induk

( nombor = dua puluh ; ( ( hasil = $nombor + 10 ) ) ; bergema 'Jumlah daripada $nombor +5= $hasil ' )

#Cetak hasil berdasarkan pembolehubah shell induk sekali lagi

bergema 'Jumlah daripada $nombor +5= $hasil '

Output berikut muncul selepas melaksanakan skrip. Output pertama dan terakhir menunjukkan hasil shell utama. Output kedua menunjukkan hasil subkulit. Pembolehubah kulit utama tidak diubah suai oleh pembolehubah subkulit:

Contoh 4: Laksanakan Berbilang Perintah dalam Subkulit

Buat fail Bash dengan skrip berikut yang menghantar output perintah 'gema' ke dalam perintah 'sed' yang menggantikan nilai rentetan yang sepadan dengan rentetan lain. Output arahan 'gema' ialah 'JavaScript'. Jadi, nilai ini dibandingkan dengan 'Java' dan 'JavaScript'. Jika padanan ditemui, rentetan yang sepadan digantikan dengan rentetan 'Jenis'.

#!/bin/bash

#Tentukan nilai rentetan

strVal = 'JavaScript'

#Cetak nilai rentetan asal

bergema 'Nilai rentetan: $strVal '

#Cetak nilai subkulit

bergema -n 'Nilai subkulit: '

bergema ' $(echo $strVal | sed 's|Java|Jenis JavaScript|') '

Output berikut muncul selepas melaksanakan skrip. Mengikut output, rentetan 'Java' digantikan dengan rentetan 'Jenis'. Output subkulit ialah 'JavaScript TypeScript':


Kesimpulan

Satu atau lebih arahan atau skrip boleh dilaksanakan menggunakan subkulit tanpa menjejaskan kulit utama. Tujuan menggunakan subkulit dijelaskan dalam tutorial ini menggunakan pelbagai contoh. Jenis tugas yang berbeza seperti mencari fail, mengira jumlah nombor, menggantikan rentetan, dan lain-lain dilakukan oleh subkulit dalam contoh yang diberikan. Konsep menggunakan subkulit ditunjukkan dengan betul dan pengguna Bash baharu kini boleh menggunakan subkulit selepas membaca tutorial ini.