Saya mencoba mempelajari cara menggunakan getopts sehingga saya dapat memiliki skrip dengan input yang diuraikan (walaupun saya pikir getopts bisa lebih baik). Saya mencoba menulis skrip sederhana untuk mengembalikan persentase penggunaan partisi. Masalahnya adalah bahwa salah satu fungsi bash saya sepertinya tidak seperti yang saya referensi $1sebagai variabel di dalam fungsi. Alasan saya referensi $1adalah karena get_percentfungsi dapat melewati titik mount sebagai argumen opsional untuk ditampilkan, bukan semua titik mount.
Naskah
#!/usr/bin/bash
set -e
set -u
set -o pipefail
get_percent(){
if [ -n "$1" ]
then
df -h $1 | tail -n +2 | awk '{ print $1,"\t",$5 }'
else
df -h | tail -n +2 | awk '{ print $1,"\t",$5 }'
fi
}
usage(){
echo "script usage: $(basename $0) [-h] [-p] [-m mount_point]" >&2
}
# If the user doesn't supply any arguments, we run the script as normal
if [ $# -eq 0 ];
then
get_percent
exit 0
fi
# ...
Hasil
$ bash thing.sh
thing.sh: line 8: $1: unbound variable
$ bash -x thing.sh
+ set -e
+ set -u
+ set -o pipefail
+ '[' 0 -eq 0 ']'
+ get_percent
thing.sh: line 8: $1: unbound variable
getopts, bukan? Script Anda keluar karena-usebelum menelepongetopts.