Cara mengelola perluasan variabel bash kosong atau tidak
- 3071
- 514
- Enrique Purdy
Objektif
Objek tutorial ini adalah mempelajari cara memodifikasi perilaku bash saat memperluas variabel yang tidak disetel atau kosong menggunakan sintaks khusus.
Persyaratan
- Tidak ada hak istimewa sistem khusus yang diperlukan untuk mengikuti tutorial ini
Perkenalan
Ekspansi Variabel adalah salah satu fitur paling umum yang digunakan dalam shell: ketika variabel ada dan merupakan bagian dari perintah, itu "diperluas", sehingga diganti dengan nilainya. Perluasan variabel kosong, adalah salah satu dari hal -hal itu, bahwa jika tidak dikelola dengan baik, dapat menyebabkan kerusakan serius pada suatu sistem: bayangkan perintah seperti ini:
$ sudo rm -rf "/$ dir"
Dalam kasus seperti ini, jika $ dir
Variabel kosong atau tidak diatur, ekspansi tidak akan menghasilkan nilai, oleh karena itu perintah yang dieksekusi yang sebenarnya adalah:
$ sudo rm -rf /
Sistem kami akan hancur. Berurusan, atau lebih baik mencegah situasi seperti itu sangat penting. Dalam tutorial ini kita akan melihat cara mengelola perluasan variabel kosong menggunakan beberapa sintaks spesifik bash.
Gunakan nilai default jika suatu variabel kosong atau tidak disetel
Kasus pertama yang kami pertimbangkan adalah ketika variabel yang tidak disetel atau kosong dirujuk ke dalam ekspansi dan kami ingin menggunakan nilai fallback/default di tempatnya. Misalkan kita merujuk yang tidak ada $ warna
Variabel sebagai bagian dari perintah berikut:
$ echo "langit adalah $ warna"
Hasil dari perintah ini adalah:
langitnya
Seperti yang diharapkan, karena variabel tidak ditetapkan, tidak ada yang dihasilkan dari ekspansi, meninggalkan kita dengan kalimat yang belum selesai (dan langit tanpa warna). Tidak ada kerugian nyata dalam kasus ini, tentu saja, tetapi bagaimana kita bisa menginstruksikan shell untuk menggunakan nilai default dalam kasus seperti ini?
Ada sintaks yang dirancang khusus untuk mendapatkan perilaku ini, dan sangat sederhana:
$ parameter: -word
Begini cara kerjanya:
$ echo "langit is $ color:-" blue "" langit itu biru
Saat menggunakan sintaks ini, jika parameter
tidak ada atau kosong, ekspansi akan menghasilkan nilai kata
. Dalam hal ini, variabel $ warna
tidak ditetapkan, oleh karena itu cangkang menggunakan "biru" sebagai hasil dari ekspansi.
Perlu diperhatikan bahwa bahkan jika ekspansi menghasilkan nilai yang ditentukan sebagai "default", dengan sintaks ini, setelah ekspansi berlangsung, $ warna
Variabel masih akan tidak disetel:
$ echo "$ warna"
Gunakan dan juga menetapkan nilai baru jika suatu variabel kosong atau tidak disetel
Perintah di atas tidak mengembalikan output, karena variabel, pada saat itu, masih belum diatur. Bagaimana jika kita ingin menggunakan nilai yang ditentukan saat memperluas variabel yang tidak disetel atau kosong, tetapi juga menetapkan nilai itu ke variabel setelah ekspansi terjadi? Sintaks yang sedikit berbeda memungkinkan kita mencapai apa yang kita inginkan:
$ parameter: = Word
Mari kita lihat contoh di mana sintaks ini digunakan:
$ echo "langit is $ color: =" blue "" langit itu biru
Seperti yang terjadi sebelumnya, kata
telah digunakan dalam ekspansi, sejak parameter
(itu $ warna
variabel) tidak disetel. Selain itu, kata
, ("Biru" dalam hal ini), juga telah ditetapkan sebagai nilai variabel yang sebelumnya tidak disetel. Memverifikasi itu sangat mudah:
$ "langit adalah $ warna" langit itu biru
Melihat? Perluasan $ warna
Variabel sekarang menghasilkan "biru".
Gunakan nilai alternatif jika suatu variabel diatur
Sintaks yang sedikit berbeda memungkinkan kami mendapatkan hasil yang bahkan berbeda, ini dia:
parameter:+kata
Bagaimana cara memodifikasi perilaku shell? Saat sintaks ini digunakan, jika parameter
kosong atau tidak, kata
akan bukan digunakan, oleh karena itu ekspansi akan kosong. Jika, sebaliknya, variabel memiliki nilai, hasil ekspansi akan kata
, dan nilai parameter
tidak akan diubah. Mari kita klarifikasi ini dengan beberapa contoh:
Kasus pertama. Variabel $ warna
tidak ditetapkan, oleh karena itu hasil dari ekspansi tidak akan ada:
$ echo "langit is $ color:+" blue "" langit adalah
Kasus kedua. Variabel $ warna
memiliki nilai: ekspansi akan menghasilkan nilai yang ditentukan di sebelah kanan :+
, tetapi nilai dari $ warna
Variabel tidak akan diubah:
# Tetapkan nilai ke variabel "color" $ color = "red" # karena variabel diatur, hasil ekspansi akan menjadi "biru" $ echo "langit adalah $ warna:+" biru "" Sky Is Blue # Nilai variabel "warna" belum diubah $ echo "$ color" red
Menyalin Menampilkan pesan kesalahan jika suatu variabel kosong atau tidak diatur
Jenis sintaks terakhir yang akan kita periksa di sini adalah:
$ parameter:?kata
Saat menggunakan sintaks ini, jika parameter
tidak diatur atau kosong, skrip akan keluar dengan kesalahan. Selain itu, kata
akan dikirim ke Stderr
(Kesalahan standar). Demi contoh ini, pertimbangkan variabel "warna" yang tidak disetel seperti sebelumnya:
# Pesan yang kami tentukan ditampilkan untuk kesalahan standar $ echo "langit adalah $ color:?"Color Not Set" "Bash: Color: Color Not Set
Menyalin Perintah keluar dengan kesalahan dan warna tidak diatur
Pesan ditampilkan. Jika variabel ditetapkan, hasil ekspansi akan menjadi nilainya sendiri:
$ color = "blue" $ echo "langit adalah $ color:?"Color Not Set" "Langit itu biru
Menyalin Tutorial Linux Terkait:
- Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…
- Variabel bash khusus dengan contoh
- Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
- File Konfigurasi Linux: 30 Teratas Paling Penting
- Bash Scripting: Periksa apakah ada direktori
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 22.04 Jammy Jellyfish…
- Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
- Perintah Linux: 20 perintah terpenting teratas yang Anda butuhkan untuk…
- Bagaimana Mengelola Sejarah Bash
- Ubuntu 20.04 Panduan