
Dalam banyak kasus, skrip bash memerlukan nilai argumen untuk memberikan opsi input ke skrip. Anda dapat menangani argumen command line dalam skrip bash dengan dua cara. Salah satunya dengan menggunakanargument variables, dan lainnya adalah dengan menggunakan the getoptsfungsi. Bagaimana Anda dapat menangani argumen command line ditunjukkan dalam tutorial ini.
Menggunakan variabel argumen:
Variabel argumen dimulai dari $0. Nama file skrip utama disimpan dalam $0, yang menerima nilai argumen dari argumen command line. Jika dua argumen dilewatkan di command line, maka secara berurutan, nilai argumen akan diterima dalam variabel $1 dan $2.
Contoh -1: Mengirim tiga nilai numerik dalam argumen command line
Buat file bash dengan skrip berikut. Skrip akan menerima nilai tiga argumen dan menyimpannya dalam variabel $1, $2, dan $3. Ini akan menghitung jumlah total argumen dan mencetak nilai argumen menggunakan loop tanpa loop. Jumlah semua nilai argumen akan dicetak nanti.
#!/bin/bash
# Counting total number of arguments
echo "Total number of arguments: $#"
# Reading argument values individually
echo "First argument value : $1"
echo "Second argument value : $2"
echo "Third argument value : $3"
# Reading argument values using loop
for argval in "[email protected]"
do
echo -n "$argval "
done
# Adding argument values
sum=$(($1+$2+$3))
# print the result
echo -e "nResult of sum = $sum"
Output berikut akan muncul setelah menjalankan file skrip dengan tiga nilai argumen numerik, 50, 35, dan 15.
$ bash cmdline1.sh 50 35 15
Contoh -2: Mengambil nama file sebagai argumen
Buat file bash dengan skrip berikut untuk menghitung jumlah total karakter file apa pun. Di sini, nama file akan diteruskan sebagai argumen command line.
#!/bin/bash
filename=$1
totalchar=`wc -c $filename`
echo "Total number of characters are $totalchar"
Jalankan skrip bash dengan nama file sebagai nilai argumen tunggal dan jalankan perintah lain untuk memeriksa jumlah total karakter file tersebut. Di sini, file hari kerja.txt digunakan sebagai nilai argumen. Jumlah total karakter dalam file hari kerja.txt adalah 57.
$ bash cmdline2.sh weekday.txt
$ wc -c weekday.txt
Menggunakan fungsi getopts:
Jika Anda ingin menyimpan data dalam database atau file apa pun atau membuat laporan dalam format tertentu berdasarkan nilai argumen command line, maka getopts fungsi adalah pilihan terbaik untuk melakukan tugas. Ini adalah fungsi Linux bawaan. Jadi, Anda dapat dengan mudah menggunakan fungsi ini di skrip Anda untuk membaca data yang diformat dari command line.
Contoh -3: Membaca argumen dengan fungsi getopts
Buat file bash dengan skrip berikut untuk memahami useran getopts fungsi. Fungsi ‘getopts’ digunakan dengan loop sementara untuk membaca opsi argumen command line dan nilai argumen. Di sini, 4 opsi digunakan yaitu‘i’, ‘n’, ‘m’ dan ‘e’. pernyataan kasus digunakan untuk mencocokkan opsi tertentu dan menyimpan nilai argumen dalam variabel. Terakhir, cetak nilai variabel.
#!/bin/bash
while getopts ":i:n:m:e:" arg; do
case $arg in
i) ID=$OPTARG;;
n) Name=$OPTARG;;
m) Manufacturing_date=$OPTARG;;
e) Expire_date=$OPTARG;;
esac< br> done
echo -e "n$ID $Name $Manufacturing_date $Expire_daten"
Jalankan file dengan opsi dan nilai argumen berikut. Di Sini,p100 adalah nilai opsi -i, ‘Hot Cake‘ adalah nilai opsi -n, ‘01-01-2021‘ adalah nilai opsi -m dan ‘06-01-2021‘ adalah nilai opsi -e.
$ bash cmdline3.sh -i p001 -n 'Hot Cake' -m '01-01-2021' -e '06-01-2021'
Saat Anda perlu mengirim nilai sederhana dalam skrip, maka lebih baik menggunakan variabel argumen. Tetapi jika Anda ingin mengirim data dengan cara yang diformat, lebih baik menggunakan fungsi getopts untuk mengambil nilai argumen. Penggunaan kedua variabel argumen dan opsi getopts telah ditunjukkan pada contoh berikut.
Contoh-4: Membaca argumen dan argumen normal dengan opsi getopts
Cara membaca argumen command line menggunakan variabel argumen dan opsi getopts telah ditunjukkan secara terpisah dalam contoh sebelumnya dari tutorial ini. Tetapi dua cara ini dapat digunakan dalam satu skrip untuk membaca nilai argumen command line. Buat skrip bash dengan kode berikut untuk membaca nilai argumen command line yang diteruskan oleh opsi getopts dan parameter argumen. Di sini, tiga opsi getopts telah digunakan untuk membaca nama host, nama user, dan password command line. Selanjutnya, perintah shift telah digunakan untuk menghapus semua opsi getopts dari perintah untuk membaca nilai command line menggunakan variabel argumen. Script ini akan membaca dan mencetak maksimal tiga nilai dari variabel argumen. Jika tidak ada nilai argumen tanpa opsi yang akan diberikan setelah kode dijalankan, maka pesan akan dicetak; jika tidak,
#!/bin/bash
# Reading arguments with getopts options
while getopts 'h:u:p:' OPTION; do
case "$OPTION" in
h)
# Print hostname
echo "host name is $OPTARG" ;;
u)
# Print username
echo "username is $OPTARG" ;;
p)
# Print password
echo "password is $OPTARG" ;;
*)
# Print helping message for providing wrong options
echo "Usage: $0 [-h value] [-u value] [-p value]" >&2
# Terminate from the script
exit 1 ;;
esac
done
# Remove all options passed by getopts options
shift "$(($OPTIND -1))"
# Reading first normal arguments
if [ ! -z $1 ]; then
echo "first table name is $1"
else
echo "No normal argument is given."
exit 1
fi
# Reading second normal arguments
if [ ! -z $2 ]; then
echo "second table name is $2"
fi
# Reading third normal arguments
if [ ! -z $3 ]; then
echo "third table name is $3"
fi
Output berikut akan muncul jika opsi yang diberikan salah pada saat mengeksekusi kode. Di sini, opsi -a tidak ada dalam skrip.
Output berikut akan muncul jika opsi yang valid dengan nilai diberikan di command line pada saat mengeksekusi kode.
Output berikut akan muncul jika opsi yang valid dan nilai argumen normal digunakan di command line pada saat mengeksekusi kode. Di sini, argumen normalnya adalahcustomer dan employee.
Menggunakan ‘ [email protected] ‘ untuk membaca argumen command line:
Argumen command line dapat dibaca tanpa menggunakan variabel argumen atau opsi getopts. Menggunakan ‘[email protected]‘ dengan tanda kurung pertama adalah cara lain untuk membaca semua nilai argumen command line.
Contoh-5: Membaca nilai argumen command line tanpa variabel
Buat file bash dengan skrip berikut untuk membaca nilai argumen tanpa variabel argumen apa pun dan menghitung jumlah tiga nilai argumen command line. “ [email protected] ” telah digunakan dengan tanda kurung pertama di sini untuk membaca semua nilai argumen ke dalam array. Selanjutnya, jumlah dari tiga nilai larik pertama akan dicetak.
#!/bin/bash
# Read all arguments values
argvals=("[email protected]")
# Check the total number of arguments
if [ $# -gt 2 ]
then
# Calculate the sum of three command line arguments
sum=$((${argvals[0]}+${argvals[1]}+${argvals[2]}))
echo "sum of 3 command line arguments is $sum"
fi
Output berikut akan muncul setelah menjalankan skrip di atas untuk nilai argumen 12, 20, dan 90. Jumlah angka-angka ini adalah 122.
Kesimpulan:
Cara untuk memberikan nilai argumen command line tanpa opsi apa pun dan dengan opsi telah ditampilkan di sini. Cara membaca nilai argumen command line tanpa menggunakan variabel telah ditunjukkan di sini juga. Saya harap tutorial ini akan membantu pembaca untuk menggunakan nilai argumen command line dengan benar dalam skrip bash mereka.