Cara Menggunakan $() dan ${} Ekspansi dalam Skrip Shell

How Use Expansions Shell Script

Jika Anda menggunakan sistem Linux, Anda mungkin sudah tahu betapa pentingnya antarmuka shell untuk berinteraksi dengan sistem Anda. Pada sebagian besar distribusi Linux, Bash adalah shell default yang kami gunakan untuk menjalankan perintah dan menjalankan skrip. Skrip shell adalah sekumpulan perintah yang, ketika dijalankan, digunakan untuk melakukan beberapa fungsi yang berguna di Linux. File .sh ini, yang ditulis oleh pengguna, berisi semua perintah yang digunakan untuk melakukan suatu tugas sehingga kita tidak perlu menjalankan perintah tersebut secara manual, satu per satu.

Dalam tutorial ini, kami akan menjelaskan dua ekspansi bash paling berguna yang digunakan dalam skrip shell:



  • $() – substitusi perintah
  • ${} – substitusi parameter/perluasan variabel

Ekspansi di Shell dilakukan pada skrip setelah dipecah menjadi token. Token adalah urutan karakter yang dianggap sebagai satu unit oleh shell. Itu bisa berupa kata atau operator.



Kami telah menjalankan semua contoh dan skrip yang disebutkan dalam artikel ini pada sistem Debian 10 Buster. Namun, Anda dapat dengan mudah mereplikasinya di sebagian besar shell Linux. Kami menggunakan baris perintah Debian default, Terminal, untuk tutorial ini. Di Debian, Anda dapat mengaksesnya melalui bilah pencarian Peluncur Aplikasi sebagai berikut:



Untuk mengakses peluncur Aplikasi, cukup tekan tombol Super/Windows pada keyboard Anda.

$() Substitusi Perintah

Menurut manual Referensi Bash GNU resmi:



Substitusi perintah memungkinkan output dari suatu perintah untuk menggantikan perintah itu sendiri. Bash melakukan ekspansi dengan menjalankan perintah dan mengganti substitusi perintah dengan output standar dari perintah, dengan menghapus baris baru yang tertinggal. Baris baru yang disematkan tidak dihapus, tetapi dapat dihapus selama pemisahan kata. Substitusi perintah terjadi ketika perintah dilampirkan sebagai berikut:

$(memerintah)
atau
``memerintah``

Misalnya, perintah gema berikut menggantikan output perintah tanggal sebagai inputnya:

$dibuang$(tanggal)
$dibuang'tanggal'

Anda juga dapat menggunakan substitusi perintah untuk menetapkan nilai ke variabel. Misalnya, kami akan mencetak tanggal hari ini melalui variabel HARI INI sebagai berikut:

$HARI INI= $(tanggal)
$dibuang '$HARI INI'

Utilitas lain dari substitusi perintah ada di loop shell untuk mendapatkan input. Di sini, kami akan mencoba mencetak semua file .txt di folder rumah kami menggunakan substitusi perintah:

untukFdi dalam /rumah/kepadamu/ *.txt
melakukan
dibuang '$f'
selesai

Menggunakan Substitusi Perintah dalam Script Shell

Contoh di atas adalah beberapa cara di mana Anda dapat memanfaatkan kekuatan substitusi perintah dalam skrip shell Anda. Berikut adalah contoh laporan status yang dapat kami cetak menggunakan skrip shell berikut:

#!/bin/sh

dibuang ***Laporan status***

HARI INI= $(tanggal)
dibuang 'Hari ini adalah$HARI INI'

PENGGUNA= $(siapa | toilet-NS)
dibuang '$USERSpengguna saat ini masuk'

UPTIME= $(tanggal;waktu aktif)
dibuang 'Waktu aktifnya adalah$UPTIME'

Substitusi perintah telah digunakan tiga kali dalam skrip ini; dalam mencetak tanggal, pengguna yang masuk dan waktu aktif. Kami menyimpan skrip sebagai berikut:

Membuatnya dapat dieksekusi dan kemudian menjalankannya melalui perintah berikut:

$chmod+ x status.sh
$./statys.sh

Berikut adalah output dari skrip status.sh kami:

Anda tentu saja dapat membuat skrip yang lebih bermakna dengan mengikuti contoh yang baru saja kami sebutkan.

${} Substitusi/Ekspansi Parameter

Parameter, di Bash, adalah entitas yang digunakan untuk menyimpan nilai. Parameter dapat direferensikan dengan angka, nama, atau simbol khusus. Ketika suatu parameter direferensikan oleh suatu angka, itu disebut a parameter posisi . Ketika parameter direferensikan dengan nama, itu disebut a variabel . Ketika sebuah parameter direferensikan oleh simbol khusus, itu berarti parameter tersebut adalah parameter autoset dengan kegunaan khusus.

Ekspansi/substitusi parameter adalah proses mengambil nilai dari entitas/parameter yang direferensikan. Ini seperti Anda memperluas variabel untuk mengambil nilainya.

Sintaks ekspansi parameter yang paling sederhana adalah sebagai berikut:

Inilah cara Anda dapat menggunakan ekspansi parameter di Bash:

${parameter}

Misalnya, penggunaan paling sederhana adalah mengganti parameter dengan nilainya:

$nama='john doe'
$dibuang ${nama}

Perintah ini akan menggantikan nilai nama variabel yang akan digunakan oleh perintah echo:

Anda mungkin berpikir bahwa hal yang sama dapat dicapai dengan menghindari kurung kurawal sebagai berikut:

Jawabannya adalah selama ekspansi parameter, kurung kurawal ini membantu dalam membatasi nama variabel. Mari kita jelaskan apa yang kita maksud dengan membatasi di sini. Biarkan saya menjalankan perintah berikut di sistem saya:

$dibuang 'Nama orangnya adalah$nama_'

Hasilnya tidak mencetak nilai nama variabel karena sistem mengira bahwa saya mengacu pada nama variabel_. Jadi, nama variabel saya tidak dibatasi. Tanda kurung kurawal pada contoh berikut akan membatasi nama variabel dan mengembalikan hasilnya sebagai berikut:

$dibuang 'Nama orangnya adalah${nama}_ '

Berikut adalah semua cara di mana variabel diganti di Shell:

$ {variabel} Perintah ini menggantikan nilai variabel.
${variabel:-kata} Jika variabel adalah nol atau jika tidak disetel, kata diganti dengan variabel. Nilai variabel tidak berubah.
${variabel:=kata} Jika suatu variabel adalah nol atau jika tidak disetel, nilai variabel disetel ke kata.
${variabel:?pesan} Jika variabel adalah nol atau jika tidak disetel, pesan akan dicetak ke kesalahan bash standar.
${variabel:+kata} Jika variabel diatur, kata diganti dengan variabel. Namun, nilai variabel itu sendiri tidak berubah.

Contoh di atas adalah beberapa cara di mana Anda dapat memanfaatkan kekuatan substitusi variabel di Bash. Anda dapat menggabungkan cara-cara ini untuk menggunakan ekspansi dalam skrip shell Anda untuk mencapai tugas Anda secara optimal.