J'essaie d'apprendre à utiliser getopts pour pouvoir avoir des scripts avec une entrée analysée (bien que je pense que getopts pourrait être mieux). J'essaie simplement d'écrire un script simple pour renvoyer les pourcentages d'utilisation de la partition. Le problème est qu'une de mes fonctions bash ne semble pas aimer celle que je référence $1
comme variable dans la fonction. La raison pour laquelle je fais référence $1
est que la get_percent
fonction peut recevoir un point de montage comme argument facultatif à afficher à la place de tous les points de montage.
Le scénario
#!/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
# ...
Le résultat
$ 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
, n'est-ce pas? Votre script se ferme-u
avant d'appelergetopts
.