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 $1comme variable dans la fonction. La raison pour laquelle je fais référence $1est que la get_percentfonction 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-uavant d'appelergetopts.