GNU/Linux >> Belajar Linux >  >> Linux

Bash Beginner Series #3:Melewati Argumen ke Skrip Bash

Argumen bisa berguna, terutama dengan Bash!

Sejauh ini, Anda telah mempelajari cara menggunakan variabel untuk membuat skrip bash Anda dinamis dan generik, sehingga responsif terhadap berbagai data dan masukan pengguna yang berbeda.

Dalam tutorial ini, Anda akan mempelajari bagaimana Anda dapat meneruskan variabel ke skrip bash dari baris perintah.

Beli eBook 'Belajar Bash dengan Cepat'

Meneruskan argumen ke skrip bash shell

Berikut script count_lines.sh akan menampilkan jumlah total baris yang ada di file apa pun yang dimasukkan pengguna:

#!/bin/bash

echo -n "Please enter a filename: "
read filename
nlines=$(wc -l < $filename)

echo "There are $nlines lines in $filename"

Misalnya, pengguna dapat memasukkan file /etc/passwd dan skrip akan mengeluarkan jumlah baris sebagai hasilnya:

Skrip ini berfungsi dengan baik; namun, ada alternatif yang jauh lebih baik!

Alih-alih meminta nama file kepada pengguna, kita dapat membuat pengguna hanya meneruskan nama file sebagai argumen baris perintah saat menjalankan skrip sebagai berikut:

./count_lines.sh /etc/passwd

Argumen bash pertama (juga dikenal sebagai parameter posisi) dapat diakses dalam skrip bash Anda menggunakan $1 variabel.

Jadi dalam skrip count_lines.sh, Anda dapat mengganti variabel nama file dengan $1 sebagai berikut:

#!/bin/bash

nlines=$(wc -l < $1)
echo "There are $nlines lines in $1"

Perhatikan bahwa saya juga menyingkirkan perintah read dan first echo karena tidak lagi diperlukan!

Terakhir, Anda dapat menjalankan skrip dan meneruskan file apa pun sebagai argumen:

./count_lines.sh    /etc/group
There are 73 lines in /etc/group

Meneruskan beberapa argumen ke skrip bash shell

Anda dapat meneruskan lebih dari satu argumen ke skrip bash Anda. Secara umum, berikut adalah sintaks untuk meneruskan beberapa argumen ke skrip bash apa pun:

script.sh arg1 arg2 arg3  …

Argumen kedua akan dirujuk oleh $2 variabel, argumen ketiga direferensikan oleh $3 , .. dll.

$0 variabel berisi nama skrip bash Anda jika Anda bertanya-tanya!

Sekarang kita dapat mengedit count_lines.sh skrip bash sehingga dapat menghitung baris lebih dari satu file:

#!/bin/bash

n1=$(wc -l < $1)
n2=$(wc -l < $2)
n3=$(wc -l < $3)

echo "There are $n1 lines in $1"
echo "There are $n2 lines in $2"
echo "There are $n3 lines in $3"

Anda sekarang dapat menjalankan skrip dan meneruskan tiga file sebagai argumen ke skrip bash:

Seperti yang Anda lihat, skrip menampilkan jumlah baris dari masing-masing dari tiga file; dan tentu saja urutan argumen itu penting.

Berkreasi dengan argumen di Bash shell

Ada banyak sekali perintah Linux di luar sana.

Beberapa di antaranya agak rumit karena mungkin memiliki sintaks yang panjang atau serangkaian opsi yang panjang yang dapat Anda gunakan.

Untungnya, Anda dapat menggunakan argumen bash untuk mengubah perintah yang sulit menjadi tugas yang cukup mudah!

Untuk mendemonstrasikan, lihat find.sh berikut ini skrip bash:

#!/bin/bash

find / -iname $1 2> /dev/null

Ini adalah skrip yang sangat sederhana yang terbukti sangat berguna! Anda dapat memberikan nama file apa pun sebagai argumen ke skrip dan itu akan menampilkan lokasi file Anda:

Anda lihat bagaimana ini sekarang jauh lebih mudah daripada mengetik seluruh perintah find! Ini adalah bukti bahwa Anda dapat menggunakan argumen untuk mengubah perintah panjang yang rumit di Linux menjadi skrip bash sederhana.

Jika Anda bertanya-tanya tentang 2> /dev/null , artinya pesan kesalahan (seperti file tidak dapat diakses) tidak akan ditampilkan di layar. Saya sarankan membaca tentang pengalihan stderr di Linux untuk mendapatkan lebih banyak pengetahuan tentang topik ini.

Kiat Bonus:Variabel khusus di shell Bash

Bash memiliki banyak variabel khusus bawaan yang cukup berguna dan tersedia untuk Anda.

Tabel di bawah menyoroti variabel bash bawaan khusus yang paling umum:

Variabel Khusus Deskripsi
$0 Nama skrip bash.
$1, $2...$n Argumen skrip bash.
$$ Id proses dari shell saat ini.
$# Jumlah total argumen yang diteruskan ke skrip.
[email protected] Nilai semua argumen yang diteruskan ke skrip.
$? Status keluar dari perintah yang terakhir dieksekusi.
$! Id proses dari perintah yang terakhir dieksekusi.

Untuk melihat variabel khusus ini beraksi; lihat variables.sh berikut ini skrip bash:

#!/bin/bash

echo "Name of the script: $0"
echo "Total number of arguments: $#"
echo "Values of all the arguments: [email protected]"

Sekarang Anda dapat memberikan argumen apa pun yang Anda inginkan dan menjalankan skrip:

Baiklah, ini membawa kita ke akhir bab ini. Saya harap Anda sekarang menyadari betapa kuat dan bergunanya argumen bash.

Perlu beberapa latihan, unduh PDF ini dan berlatih memberikan argumen ke skrip bash dengan tantangan skrip sederhana. Solusi mereka juga disertakan.

Bash Bab 3 Latihan Soal Masalah dan solusinya untuk mempraktikkan apa yang baru saja Anda pelajari di bab iniBash-Bab-3-Pertanyaan-Latihan-Buku Pegangan-Linux.pdf30 KB

Setelah itu, lihat bab berikutnya di mana saya akan menunjukkan bahwa Anda dapat membuat dan menggunakan array di skrip bash Anda.


Linux
  1. Penanganan kesalahan dalam skrip Bash

  2. Menambahkan argumen dan opsi ke skrip Bash Anda

  3. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  1. Lewati Argumen Baris Perintah ke Skrip Bash?

  2. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  3. Bash Seri Pemula #8:Loop di Bash

  1. Bagaimana cara menyorot skrip Bash di Vim?

  2. mengotomatiskan sesi telnet menggunakan skrip bash

  3. Jalankan perintah bash pada pipa jenkins