Variabel Khusus Bash ($ 0, $?, $#, [email dilindungi]</a>, $$, $*)

Variabel Khusus Bash ($ 0, $?, $#, [email dilindungi]</a>, $$, $*)

Bash adalah cangkang yang kuat yang menyediakan berbagai variabel khusus yang dapat digunakan untuk memanipulasi dan mengendalikan perilaku skrip. Variabel-variabel ini memberikan informasi penting tentang lingkungan tempat skrip berjalan, termasuk argumen baris perintah, ID proses saat ini, dan status perintah yang dieksekusi terakhir.

Dalam artikel ini, kami akan memberikan panduan mendalam untuk semua variabel khusus bash, termasuk contoh penggunaannya dan jebakan umum untuk menghindari.

  1. '$ 0' - Nama skrip yang dieksekusi.
  2. '$ 1- $ 9' - Sembilan argumen baris perintah pertama.
  3. '$#' - Jumlah argumen baris perintah.
  4. '$*' - Semua argumen baris perintah sebagai satu string.
  5. '[Email dilindungi]' - Semua argumen baris perintah sebagai array.
  6. '$?' - Status keluar dari perintah yang terakhir dieksekusi.
  7. '$$' - ID proses shell saat ini.
  8. '$!' - ID proses perintah latar belakang terakhir.

Mari kita bahas variabel khusus secara rinci dengan contoh.

$ 0 - Nama skrip yang dieksekusi

Di pesta, $ 0 adalah parameter khusus yang memegang nama skrip atau shell yang saat ini sedang dieksekusi. Ini juga dikenal sebagai "nama" atau "argumen nol" dari naskah.

Misalnya, misalkan Anda memiliki skrip yang disebut “Myscript.SH" yang ingin Anda jalankan dari direktori mana pun. Dalam hal ini, Anda dapat menggunakan variabel $ 0 untuk menentukan nama skrip yang dieksekusi:

#!/bin/bash echo "skrip berjalan saat ini adalah: $ 0"
12#!/bin/Bashecho "skrip yang sedang berjalan saat ini adalah: $ 0"

Anda juga dapat menentukan direktori di mana skrip berada dan kemudian menggunakan direktori itu untuk menemukan file apa pun yang dibutuhkan 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 perintah

Itu $ 1, $ 2,…, $ 9 Variabel berisi sembilan argumen baris perintah pertama yang diteruskan ke skrip. Variabel -variabel ini berguna untuk membuat skrip shell yang menerima input pengguna.

Misalnya, misalkan Anda memiliki skrip yang disebut "menyapa.SH" Itu mengambil nama sebagai argumen baris perintah pertama. Dalam hal ini, Anda dapat menggunakan $ 1 variabel untuk mengambil nama dan kemudian menggunakannya di output skrip.

#!/bin/bash echo "Halo, $ 1!"
12#!/bin/Bashecho "Halo, $ 1!"

Jika skrip perlu mengakses lebih dari sembilan argumen baris perintah, $ 10, $ 11,…, $ n Variabel dapat digunakan untuk mengambilnya. Variabel-variabel ini dapat digunakan dengan perintah shift untuk memproses argumen baris perintah dalam batch. Pastikan variabelnya tertutup kurung.

$# - Jumlah argumen baris perintah

Itu $# Variabel berisi jumlah argumen baris perintah yang diteruskan ke skrip. Variabel ini berguna untuk membuat skrip shell yang memvalidasi input pengguna.

Misalnya, misalkan Anda memiliki skrip yang disebut "mengesahkan.SH”Itu membutuhkan dua argumen baris perintah. Dalam hal ini, Anda dapat menggunakan variabel $# untuk memastikan bahwa jumlah argumen yang benar disediakan.

#!/bin/bash if [[$# -ne 2]] kemudian echo "penggunaan: validasi.sh [nama pengguna] [kata sandi] "Keluar 1 fi
123456#!/bin/Bashif [[$# -NE 2]] lalu echo "penggunaan: validasi.sh [nama pengguna] [kata sandi] "Keluar 1fi

$* - semua argumen baris perintah sebagai string tunggal

Itu $* Variabel berisi semua argumen baris perintah yang diteruskan ke skrip sebagai string tunggal. Variabel ini berguna untuk membuat skrip shell yang perlu memanipulasi seluruh string baris perintah.

Misalnya, misalkan Anda memiliki skrip yang disebut "bergabung.SH" yang bergabung dengan dua string yang disediakan sebagai argumen baris perintah. Dalam hal ini, Anda dapat menggunakan $* variabel untuk menggabungkan string.

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

[Email Dilindungi] - Semua argumen baris perintah sebagai array

Itu [Email dilindungi] Variabel berisi semua argumen baris perintah yang diteruskan ke skrip sebagai array. Variabel ini berguna untuk membuat skrip shell yang perlu memanipulasi argumen baris perintah individual.

Misalnya, misalkan Anda memiliki skrip yang disebut "daftar.SH" yang mencantumkan semua file dalam direktori yang disediakan sebagai argumen baris perintah. Dalam hal ini, Anda dapat menggunakan [Email dilindungi] Variabel untuk mengulangi setiap nama direktori dan daftar file di direktori itu.

#!/bin/bash untuk direktori di "$@" do echo "mencantumkan file dalam $ direktori:" ls -l $ direktori selesai
123456#!/Bin/Bashfor Directory di "[email dilindungi]" do echo "mencantumkan file dalam $ direktori:" ls -l $ directorydone

$? - Status keluar dari perintah yang terakhir dieksekusi

Itu $? Variabel berisi status keluar dari perintah yang dieksekusi terakhir. Variabel ini sangat membantu dalam membuat skrip shell yang perlu menangani kesalahan atau mengambil tindakan berbeda tergantung pada keberhasilan atau kegagalan perintah.

Misalnya, misalkan Anda memiliki skrip yang disebut “Buat file.SH" yang membuat file dan mengembalikan status keluar yang menunjukkan keberhasilan atau kegagalan. Dalam hal ini, Anda dapat menggunakan $? variabel untuk memeriksa status keluar dan mengambil tindakan yang sesuai.

#!/bin/bash touch myfile.txt if [[$? -eq 0]] kemudian echo "file dibuat berhasil" else echo "kesalahan membuat file" fi
12345678#!/bin/Bashtouch myfile.txtif [[$? -eq 0]] kemudian echo "file dibuat berhasil" else echo "kesalahan membuat file" fi

$$ - ID proses shell saat ini

Itu $$ Variabel berisi ID proses skrip saat ini. Variabel ini berguna untuk membuat skrip shell yang perlu mengelola beberapa proses atau membuat nama file yang unik.

Misalnya, misalkan Anda memiliki skrip yang disebut "catatan.SH" yang mencatat informasi ke file dengan nama unik berdasarkan ID proses. Dalam hal ini, Anda dapat menggunakan $$ variabel untuk menghasilkan nama file yang unik.

#!/bin/bash log_file = "log _ $$.txt "echo" logging ke file $ log_file "
123#!/bin/bashlog_file = "log _ $$.txt "echo" logging ke file $ log_file "

$! - ID proses perintah latar belakang terakhir

Itu $! Variabel berisi ID proses dari perintah latar belakang terakhir yang dieksekusi oleh skrip. Variabel ini berguna untuk membuat skrip shell yang perlu mengelola banyak proses atau memantau kemajuan perintah yang sudah berjalan lama.

Misalnya, misalkan Anda memiliki skrip yang disebut "latar belakang.SH" Itu menjalankan perintah di latar belakang dan mencatat kemajuannya. Dalam hal ini, Anda dapat menggunakan $! variabel untuk memantau kemajuan perintah.

#!/bin/bash MyCommand & pid = $! sementara ps -p $ pid>/dev/null; do echo "perintah masih berjalan" sleep 1 done echo "command telah selesai"
12345678#!/bin/BashmyCommand & pid = $!sementara ps -p $ pid>/dev/null; do echo "perintah masih menjalankan perintah" sleep 1doneecho "telah selesai"

Kesimpulan

Sebagai kesimpulan, variabel khusus bash memberikan informasi penting tentang lingkungan tempat skrip berjalan. Variabel-variabel ini memungkinkan Anda untuk membuat skrip shell yang lebih fleksibel, kuat, dan tahan kesalahan. Dengan menguasai penggunaan variabel -variabel ini, Anda dapat membawa keterampilan skrip shell Anda ke tingkat berikutnya.