Beri tanda kutip di beberapa argumen
Dalam hal ini, getop akan memperlakukan mereka sebagai satu argumen, tetapi Anda akan dapat membaginya nanti. Anda bahkan dapat menempatkan semua argumen dalam array sekaligus:
#!/bin/bash
while getopts ":hr:l:" opt; do
case $opt in
r ) echo "Run Numbers - argument = $OPTARG "
set -f # disable glob
IFS=' ' # split on space characters
array=($OPTARG) ;; # use the split+glob operator
l ) echo "Latency range - argument = $OPTARG" ;;
h ) helptext
graceful_exit ;;
* ) usage
clean_up
exit 1
esac
done
echo "Number of arguments: ${#array[@]}"
echo -n "Arguments are:"
for i in "${array[@]}"; do
echo -n " ${i},"
done
printf "\b \n"
Contoh menjalankan:
./script -r "123 456 789"
Dan output:
Run Numbers - argument = 123 456 789
Number of arguments: 3
Arguments are: 123, 456, 789
Gunakan koma (atau karakter pilihan lainnya) sebagai pembatas
./script -r 123,456,789
dan Anda cukup mengganti IFS=" "
dengan IFS=,
pada kode di atas. Yang satu memiliki keunggulan memungkinkan elemen kosong. Seperti yang ditunjukkan pada bagian komentar, solusi ini dipilih oleh beberapa program umum misalnya lsblk -o NAME,FSTYPE,SIZE
.
Izinkan beberapa -r
opsi
Banyak -r
, tetapi masing-masing hanya mengambil satu argumen:
./script -r 123 -r 456 -r 789
Kemudian argumen akan ditambahkan ke array satu per satu
array+=("$OPTARG")
Yang satu memiliki keuntungan karena tidak memiliki batasan pada karakter apa yang mungkin mengandung elemen. Yang ini juga digunakan oleh beberapa alat linux standar misalnya awk -v var1=x -v var2=y
.
mount
.