Cara menguruskan pengembangan pembolehubah bash kosong atau tidak tersendiri

Cara menguruskan pengembangan pembolehubah bash kosong atau tidak tersendiri

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