Pembolehubah khas bash ($ 0, $?, $#, [dilindungi e -mel]</a>, $$, $*)

Pembolehubah khas bash ($ 0, $?, $#, [dilindungi e -mel]</a>, $$, $*)

Bash adalah cangkang yang kuat yang menyediakan pelbagai pembolehubah khas yang boleh digunakan untuk memanipulasi dan mengawal tingkah laku skrip. Pembolehubah ini memberikan maklumat penting mengenai persekitaran di mana skrip berjalan, termasuk hujah baris arahan, ID proses semasa, dan status perintah yang dilaksanakan terakhir.

Dalam artikel ini, kami akan memberikan panduan mendalam kepada semua pembolehubah khas bash, termasuk contoh penggunaan dan perangkap biasa mereka untuk mengelakkan.

  1. '$ 0' - Nama skrip yang dilaksanakan.
  2. '$ 1- $ 9' - Sembilan Perintah Pertama Argumen.
  3. '$#' - Bilangan hujah baris arahan.
  4. '$*' - Semua hujah baris arahan sebagai rentetan tunggal.
  5. '[dilindungi e -mel]' - Semua hujah baris arahan sebagai pelbagai.
  6. '$?' - Status keluar perintah terakhir yang dilaksanakan.
  7. '$$' - ID proses cangkang semasa.
  8. '$!' - ID proses arahan latar belakang terakhir.

Mari kita bincangkan pembolehubah khas secara terperinci dengan contoh.

$ 0 - Nama skrip yang dilaksanakan

Dalam bash, $ 0 adalah parameter khas yang memegang nama skrip atau shell yang sedang dilaksanakan. Ia juga dikenali sebagai "nama" atau "argumen zeroth" skrip.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Myscript.sh " yang anda mahu lari dari mana -mana direktori. Dalam kes itu, anda boleh menggunakan pembolehubah $ 0 untuk menentukan nama skrip yang dilaksanakan:

#!/bin/bash echo "Skrip berjalan semasa ialah: $ 0"
12#!/bin/Bashecho "Skrip berjalan semasa ialah: $ 0"

Anda juga boleh menentukan direktori di mana skrip terletak dan kemudian menggunakan direktori itu untuk mencari sebarang fail yang diperlukan skrip.

#!/bin/bash script_dir = "$ (cd" $ (dirname "$ bash_source [0]") "&& pwd)" echo "skrip berjalan dari $ script_dir"
123#!/bin/bashscript_dir = "$ (cd" $ (dirname "$ bash_source [0]") "&& pwd)" echo "Skrip berjalan dari $ script_dir"

$ 1, $ 2, ..., $ 9 - Argumen baris arahan

The $ 1, $ 2, ..., $ 9 Pembolehubah mengandungi sembilan hujah baris arahan pertama yang dihantar ke skrip. Pembolehubah ini berguna untuk membuat skrip shell yang menerima input pengguna.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Salam.sh " yang mengambil nama sebagai hujah baris arahan yang pertama. Dalam kes itu, anda boleh menggunakan $ 1 pemboleh ubah untuk mendapatkan nama dan kemudian menggunakannya dalam output skrip.

#!/bin/bash echo "Hello, $ 1!"
12#!/bin/bashecho "Hello, $ 1!"

Sekiranya skrip perlu mengakses lebih daripada sembilan hujah baris arahan, $ 10, $ 11, ..., $ n Pembolehubah boleh digunakan untuk mengambilnya. Pembolehubah ini boleh digunakan dengan arahan shift untuk memproses argumen baris arahan dalam kelompok. Pastikan pembolehubah itu tertutup dengan kurungan.

$# - bilangan argumen baris arahan

The $# Pembolehubah mengandungi bilangan argumen baris arahan yang dihantar ke skrip. Pembolehubah ini berguna untuk membuat skrip shell yang mengesahkan input pengguna.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Mengesahkan.sh"Itu memerlukan dua hujah baris arahan. Dalam hal ini, anda boleh menggunakan pembolehubah $# untuk memastikan bilangan argumen yang betul disediakan.

#!/bin/bash if [[$# -ne 2]] kemudian echo "penggunaan: validate.sh [nama pengguna] [kata laluan] "Keluar 1 fi
123456#!/bin/bashif [[$# -ne 2]] kemudian echo "penggunaan: validate.sh [nama pengguna] [kata laluan] "Keluar 1FI

$* - semua argumen baris arahan sebagai rentetan tunggal

The $* Pembolehubah mengandungi semua hujah baris arahan yang dihantar ke skrip sebagai rentetan tunggal. Pembolehubah ini berguna untuk membuat skrip shell yang perlu memanipulasi keseluruhan rentetan baris arahan.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Sertai.sh " yang bergabung dengan dua rentetan yang disediakan sebagai hujah baris arahan. Dalam kes itu, anda boleh menggunakan $* pemboleh ubah untuk menggabungkan tali.

#!/bin/bash bergabung = "$*
12#!/bin/bashjoined = "$*

[dilindungi e -mel] - Semua hujah baris arahan sebagai array

The [dilindungi e -mel] Pembolehubah mengandungi semua hujah baris arahan yang dihantar ke skrip sebagai array. Pembolehubah ini berguna untuk membuat skrip shell yang perlu memanipulasi hujah baris arahan individu.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Senarai.sh " yang menyenaraikan semua fail dalam direktori yang disediakan sebagai hujah baris arahan. Dalam kes itu, anda boleh menggunakan [dilindungi e -mel] pemboleh ubah untuk melangkah ke atas setiap nama direktori dan menyenaraikan fail dalam direktori itu.

#!/bin/bash untuk direktori dalam fail penyenaraian "$@" do echo "dalam direktori $:" Direktori ls -l $ dilakukan
123456#!/bin/bashfor direktori dalam fail penyenaraian "[e -mel dilindungi]" do echo "dalam direktori $:" ls -l $ directorydone

$? - Status keluar perintah terakhir yang dilaksanakan

The $? Pembolehubah mengandungi status keluar perintah yang dilaksanakan terakhir. Pemboleh ubah ini membantu dalam membuat skrip shell yang perlu mengendalikan kesilapan atau mengambil tindakan yang berbeza bergantung pada kejayaan atau kegagalan perintah.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Buat fail.sh " yang membuat fail dan mengembalikan status keluar yang menunjukkan kejayaan atau kegagalan. Dalam kes itu, anda boleh menggunakan $? pemboleh ubah untuk memeriksa status keluar dan mengambil tindakan yang sesuai.

#!/bin/bash sentuh myfile.txt jika [$? -eq 0]] kemudian echo "Fail dibuat dengan jayanya" lain echo "ralat membuat fail" fi
12345678#!/bin/bashtouch myfile.txtif [[$? -eq 0]] kemudian echo "Fail dibuat dengan jayanya" lain echo "ralat membuat fail" fi

$$ - ID proses shell semasa

The $$ Pembolehubah mengandungi ID proses skrip semasa. Pembolehubah ini berguna untuk membuat skrip shell yang perlu menguruskan pelbagai proses atau membuat nama fail yang unik.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Log.sh " yang log masuk maklumat ke fail dengan nama unik berdasarkan id proses. Dalam kes itu, anda boleh menggunakan $$ pemboleh ubah untuk menghasilkan nama fail yang unik.

#!/bin/bash log_file = "log _ $$.TXT "echo" Logging to file $ Log_file "
123#!/bin/bashlog_file = "log _ $$.TXT "echo" Logging to file $ Log_file "

$! - ID proses arahan latar belakang terakhir

The $! Pembolehubah mengandungi ID proses arahan latar belakang terakhir yang dilaksanakan oleh skrip. Pembolehubah ini berguna untuk membuat skrip shell yang perlu menguruskan pelbagai proses atau memantau kemajuan arahan jangka panjang.

Contohnya, katakan anda mempunyai skrip yang dipanggil "Latar belakang.sh " yang menjalankan arahan di latar belakang dan log kemajuannya. Dalam kes itu, anda boleh menggunakan $! pemboleh ubah untuk memantau kemajuan arahan.

#!/bin/bash myCommand & pid = $! manakala ps -p $ pid>/dev/null; perintah echo "masih menjalankan perintah" tidur 1 selesai echo "telah selesai"
12345678#!/bin/bashmycommand & pid = $!manakala ps -p $ pid>/dev/null; perintah echo "masih menjalankan perintah" tidur 1doneecho "telah selesai"

Kesimpulan

Kesimpulannya, pembolehubah khas bash memberikan maklumat penting mengenai persekitaran di mana skrip berjalan. Pembolehubah ini membolehkan anda membuat skrip shell yang lebih fleksibel, teguh, dan ralat. Dengan menguasai penggunaan pembolehubah ini, anda boleh mengambil kemahiran skrip shell anda ke peringkat seterusnya.