Cara menguruskan pengembangan pembolehubah bash kosong atau tidak tersendiri
- 1513
- 460
- Wendell Shields
Objektif
Objek tutorial ini adalah untuk mempelajari cara mengubah suai tingkah laku bash ketika memperluaskan pembolehubah yang tidak jelas atau kosong menggunakan sintaks khusus.
Keperluan
- Tidak ada keistimewaan sistem khas yang diperlukan untuk mengikuti tutorial ini
Pengenalan
Pengembangan pembolehubah adalah salah satu ciri yang paling biasa digunakan dalam shell: apabila pembolehubah wujud dan merupakan sebahagian daripada arahan, ia "diperluas", sehingga digantikan dengan nilainya. Pengembangan pembolehubah kosong, adalah salah satu daripada perkara itu, bahawa jika tidak diuruskan dengan baik, boleh menyebabkan kerosakan yang serius kepada sistem: bayangkan arahan seperti ini:
$ sudo rm -rf "/$ dir"
Dalam kes seperti ini, jika $ dir
Pembolehubah kosong atau tidak ditetapkan, pengembangannya tidak akan menghasilkan nilai, oleh itu perintah yang dilaksanakan sebenar adalah:
$ sudo rm -rf /
Sistem kami akan ditakdirkan. Berurusan, atau lebih baik menghalang keadaan seperti itu sangat penting. Dalam tutorial ini, kita akan melihat bagaimana untuk menguruskan pengembangan pembolehubah kosong menggunakan beberapa sintaks khusus bash.
Gunakan nilai lalai jika pemboleh ubah kosong atau tidak ditetapkan
Kes pertama yang kita ambil kira adalah apabila pemboleh ubah yang tidak tersembunyi atau kosong dirujuk ke dalam pengembangan dan kami ingin menggunakan nilai sandaran/lalai di tempatnya. Katakan kita merujuk yang tidak wujud $ warna
Pembolehubah sebagai sebahagian daripada arahan berikut:
$ echo "langit adalah $ warna"
Hasil dari perintah ini adalah:
langit adalah
Seperti yang dijangkakan, kerana pemboleh ubah tidak ditetapkan, tiada hasil dari pengembangannya, meninggalkan kita dengan ayat yang belum selesai (dan langit tanpa warna). Tidak ada kemudaratan sebenar dalam kes ini, sudah tentu, tetapi bagaimana kita dapat mengarahkan shell untuk menggunakan nilai lalai dalam kes seperti ini?
Terdapat sintaks yang direka khusus untuk mendapatkan tingkah laku ini, dan sangat mudah:
$ parameter: -word
Inilah cara ia berfungsi:
$ echo "The Sky Is $ Color:-" Blue "" The Sky Is Blue
Semasa menggunakan sintaks ini, jika parameter
tidak wujud atau kosong, pengembangan akan menghasilkan nilai perkataan
. Dalam kes ini, pemboleh ubah $ warna
tidak ditetapkan, oleh itu shell yang digunakan "biru" sebagai hasil pengembangan.
Perlu diperhatikan bahawa walaupun pengembangan itu menghasilkan nilai yang ditentukan sebagai "lalai", dengan sintaks ini, setelah pengembangan berlaku, $ warna
Pembolehubah masih tidak tersendiri:
$ echo "$ warna"
Gunakan dan juga menetapkan nilai baru jika pemboleh ubah kosong atau tidak ditetapkan
Perintah di atas tidak mengembalikan output, kerana pembolehubah, pada ketika itu, masih belum ditetapkan. Bagaimana jika kita mahu menggunakan nilai yang ditentukan apabila memperluaskan pemboleh ubah yang tidak teratur atau kosong, tetapi juga memberikan nilai kepada pemboleh ubah selepas pengembangan berlaku? Sintaks yang sedikit berbeza membolehkan kita mencapai apa yang kita mahukan:
$ parameter: = word
Mari lihat contoh sintaks ini digunakan:
$ echo "langit adalah $ color: =" blue "" langit biru
Sama seperti yang berlaku sebelum ini, perkataan
telah digunakan dalam pengembangan, sejak itu parameter
(The $ warna
berubah) tidak ditetapkan. Sebagai tambahan, perkataan
, ("Biru" dalam kes ini), juga telah ditugaskan sebagai nilai kepada pemboleh ubah yang tidak disengaja sebelumnya. Mengesahkannya sangat mudah:
$ "langit adalah $ warna" langit berwarna biru
Lihat? Pengembangan $ warna
Pemboleh ubah kini menghasilkan "biru".
Gunakan nilai alternatif jika pemboleh ubah ditetapkan
Sintaks yang sedikit berbeza marilah kita mendapatkan hasil yang berbeza, di sini adalah:
parameter:+word
Bagaimana ia mengubah suai tingkah laku cangkang? Apabila sintaks ini digunakan, jika parameter
kosong atau tidak ditetapkan, perkataan
akan tidak digunakan, oleh itu pengembangan akan kosong. Jika, sebaliknya, pemboleh ubah mempunyai nilai, hasil pengembangan akan perkataan
, dan nilai parameter
tidak akan diubah. Mari jelaskan ini dengan beberapa contoh:
Kes pertama. Pembolehubah $ warna
tidak ditetapkan, oleh itu hasil pengembangan tidak akan menjadi apa -apa:
$ echo "langit adalah $ color:+" Blue "" Langit adalah
Kes kedua. Pembolehubah $ warna
mempunyai nilai: pengembangan akan menghasilkan nilai yang ditentukan di sebelah kanan :+
, tetapi nilai $ warna
Pembolehubah tidak akan diubah:
# Berikan nilai kepada pemboleh ubah "warna" warna $ warna = "merah" # Oleh kerana pemboleh ubah ditetapkan, hasil pengembangan akan menjadi "biru" $ echo "langit adalah $ color:+" blue "" Sky Is Blue # Nilai pemboleh ubah "warna" belum diubah $ echo "$ warna" merah
Salinan Paparkan mesej ralat jika pemboleh ubah kosong atau tidak ditetapkan
Sintaks jenis terakhir yang akan kita periksa di sini adalah:
$ parameter:?perkataan
Semasa menggunakan sintaks ini, jika parameter
tidak ditetapkan atau kosong, skrip akan keluar dengan kesilapan. Sebagai tambahan, perkataan
akan dihantar ke stderr
(kesalahan biasa). Demi contoh ini, pertimbangkan pemboleh ubah "warna" tidak semestinya seperti dahulu:
# Mesej yang kami tentukan dipaparkan kepada ralat standard $ echo "langit adalah $ warna:?"Warna tidak ditetapkan" "Bash: Warna: Warna tidak ditetapkan
Salinan Perintah itu keluar dengan kesilapan dan warna tidak ditetapkan
mesej dipaparkan. Sekiranya pembolehubah telah ditetapkan, hasil pengembangan akan menjadi nilai tersendiri:
$ color = "blue" $ echo "langit adalah $ warna:?"Warna tidak ditetapkan" "langit berwarna biru
Salinan Tutorial Linux Berkaitan:
- Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..
- Pemboleh ubah bash khas dengan contoh
- Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
- Fail Konfigurasi Linux: 30 teratas yang paling penting
- Skrip Bash: Periksa sama ada direktori wujud
- Perkara yang perlu dilakukan setelah memasang Ubuntu 22.04 Jur -ubur Jammy ..
- Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
- Perintah Linux: Top 20 Perintah Paling Penting yang Anda Perlu ..
- Cara Mengurus Sejarah Bash
- Ubuntu 20.04 Panduan