(Ben getopts daha iyi olabileceğini düşünüyorum rağmen) ayrıştırılmış girdi ile komut dosyaları olabilir böylece getopts kullanmayı öğrenmeye çalışıyorum. Sadece bölüm kullanım yüzdeleri döndürmek için basit bir komut dosyası yazmaya çalışıyorum. Sorun benim bash işlevlerinden biri ben $1
işlev içinde bir değişken olarak başvuru gibi görünmüyor olmasıdır . Başvurmamın nedeni $1
, get_percent
işlevin tüm bağlama noktaları yerine görüntülemek için isteğe bağlı bir bağımsız değişken olarak bir bağlama noktasından geçirilebilmesidir.
Senaryo
#!/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
# ...
Çıktı
$ 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
, değil mi? Komut dosyanız-u
çağrı yapmadan önce nedeniyle çıkıyorgetopts
.