Anda mungkin mengetahui variabel dalam skrip shell Bash.
Seperti bahasa pemrograman dan skrip lainnya, Anda menggunakan variabel untuk menyimpan data dan kemudian merujuknya nanti di perintah mendatang.
name="Linux Handbook"
echo "Hello $name!"
Dan itu akan mencetak "Hello Linux Handbook!".
Di luar contoh di atas, ada juga banyak hal yang dapat Anda lakukan dengan variabel, seperti mengisi nilai default saat variabel tidak disetel, dan menetapkan beberapa nilai ke satu variabel.
Biarkan saya menunjukkan kepada Anda penggunaan variabel yang tidak biasa dan canggih ini dalam skrip bash.
Menggunakan array
Tidak termasuk contoh di atas, jenis variabel paling umum yang akan Anda temukan di Bash adalah array:
name=("Linux Handbook" "It's FOSS")
Contoh di atas menetapkan Linux Handbook
dan It's FOSS
sebagai nilai untuk name
variabel.
Bagaimana Anda mengakses setiap nilai?
Jika Anda menjalankan echo $name
, Anda akan melihat bahwa itu mencetak nilai pertama, Linux Handbook
. Untuk mengakses nilai lain, Anda harus menggunakan sintaks yang berbeda untuk variabel.
Untuk mulai menarik nilai-nilai lain, mari kita mulai dengan membiasakan diri dengan hal berikut:
echo "Hello ${name}!"
Ini adalah dasar untuk apa yang memungkinkan Anda memperoleh semua nilai variabel, dan juga apa yang akan memungkinkan Anda melakukan metode lainnya untuk berinteraksi dengan variabel di seluruh artikel ini.
Kembali ke contoh di atas, Anda dapat menggunakan ${variable[number]}
sintaks untuk menarik item tertentu dari variabel:
echo "Hello ${name[1]}!"
Yang ini akan mencetak "Halo Ini FOSS!"
Jika Anda belum bisa melihat dari contoh di atas, item pertama dalam array sebenarnya dimulai dari 0, bukan 1.
Jadi untuk menarik Linux Handbook
nilai, Anda akan menarik item pada posisi 0:
echo "Hello ${name[0]}!"
Demikian juga, cukup hilangkan [number]
bagian hanya membuatnya default ke item pertama dalam array (yang berada di indeks 0).
Dan itu membentuk semua tipe variabel yang sebenarnya akan Anda temukan di dalam Bash.
Sekarang mari masuk ke bagaimana Anda benar-benar dapat bekerja dengan dan memodifikasi output dari variabel-variabel tersebut saat kita memanggilnya.
Menyetel nilai saat variabel tidak disetel
Anda dapat membuat variabel default kembali ke string tertentu saat variabel tidak disetel seperti ini:
${variable:-string}
Ambil contoh ini:
echo "Hello ${name:-nobody}!"
Karena variabel name
tidak disetel, defaultnya akan menjadi nobody
dan perintah di atas akan mencetak "Halo tidak ada!".
Jika variabel diset terlebih dahulu, nilainya akan digunakan:
name="Linux Handbook"
echo "Hello ${name:-nobody}!"
Perintah di atas mencetak "Halo Linux Handbook!"
Menyetel nilai saat variabel adalah sudah disetel
Anda juga dapat menyetel variabel untuk mengembalikan nilai tertentu saat variabel adalah mengatur. Ini akan menyebabkan variabel mencetak string tertentu setiap kali disetel, dan tidak mencetak apa pun saat tidak.
Sintaks untuk metode ini mirip dengan yang sebelumnya, tetapi menggunakan +
tanda tangan sebagai ganti -
.
${variable:+string}
Ambil contoh ini di mana nama variabel tidak disetel. Jadi itu tidak akan mencetak apa pun untuk bagian variabel itu dan output untuk perintahnya adalah "Halo !"
echo "Hello ${name:+person}!"
Ubah contoh di atas dan atur variabel name
. Dengan metode khusus ini, itu tidak akan menggunakan nilai yang sudah ditetapkan dan menggunakan yang Anda berikan.
name="Linux Handbook"
echo "Hello ${name:+person}!"
Perintah di atas akan mencetak "Halo orang!".
Anda mungkin akan menemukan lebih banyak kasus penggunaan dengan ${variable:-string}
sintaks, karena beberapa manfaat dari ${variable:+string}
sudah dapat diselesaikan dengan alat lain seperti pengujian ([]
) operator:
Referensi tidak langsung ke variabel
Contoh berikutnya akan menggunakan sintaks berikut:
${!variable}
Yang ini sedikit lebih rumit dalam cara kerjanya, tetapi masuk akal setelah Anda melihat cara kerjanya:
name="Linux Handbook"
variable="name"
echo "Hello ${!variable}!"
Ini akan mencetak "Halo Linux Handbook".
!
. itu karakter sebelum nama variabel menyebabkan nama variabel normal diganti, tetapi kemudian menggunakan nama itu tring untuk menemukan variabel yang relevan.
Demikian juga:
variable
diganti dengan stringname
, diikuti oleh:name
diganti dengan nilaiLinux Handbook
.
Mencari panjang variabel
Mari kita gunakan cara sebelumnya, tetapi tukar !
karakter untuk #
:
${#variable}
Menggunakan metode ini akan mencetak panjang variabel, tetapi akan bertindak sedikit berbeda tergantung pada apakah variabel tersebut adalah string atau array.
Menggunakan sintaks itu pada string akan menyebabkan variabel diganti dengan jumlah karakter dalam string.
variable="name"
echo "Length is ${#variable}."
Ini akan mencetak 4. Tetapi di sisi lain, menggunakannya pada array akan mencetak jumlah item di dalam array, yaitu ukuran array, yaitu 2 di sini.
variable=("name" "word")
echo "Length is ${#variable}."
Mengurangi huruf kecil dan menggunakan huruf besar pada string
Terakhir, Anda dapat menggunakan huruf besar dan huruf kecil untuk string menggunakan ^
dan ,
masing-masing operator.
Anda memberikan ini di akhir nama variabel seperti ini:
# Capitalizes
${variable^}
${variable^^}
# Lowercases
${variable,}
${variable,,}
Apa perbedaan antara menyediakan satu dan dua karakter?
Menyediakan hanya satu (yaitu ${variable^}
) hanya akan menyebabkan huruf pertama diubah, sementara memberikan dua (${variable^^}
) akan menyebabkan seluruh string diubah.
Contoh di bawah ini mencetak Name
bukannya name
:
variable="name"
echo "${variable^}"
Tapi yang ini mencetak NAME
:
variable="name"
echo "${variable^^}"
Demikian pula, Anda juga dapat mencetak variabel dalam huruf kecil.
Contoh di bawah ini akan mencetak wIDEname
:
variable="WIDEname"
echo "${variable,}"
Dan yang ini akan mencetak widename
:
variable="WIDEname"
echo "${variable,,}"
Menutup
Ini hanya beberapa cara Anda dapat menggunakan variabel di dalam Bash. Anda dapat menemukan lebih banyak cara untuk berinteraksi dengan variabel di dalam dokumentasi Bash tentang ekspansi variabel.
Punya pertanyaan tentang cara kerja contoh di atas, atau ada yang tidak berfungsi dengan benar? Jangan ragu untuk meninggalkannya di bagian komentar di bawah.