Estoy tratando de aprender a usar getopts para poder tener scripts con entrada analizada (aunque creo que getopts podría ser mejor). Estoy tratando de escribir un script simple para devolver porcentajes de uso de la partición. El problema es que a una de mis funciones bash no parece gustarle que haga referencia $1
como una variable dentro de la función. La razón por la que hago referencia $1
es porque a la get_percent
función se le puede pasar un punto de montaje como un argumento opcional para mostrar en lugar de todos los puntos de montaje.
La secuencia de comandos
#!/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
# ...
La salida
$ 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
, ¿verdad? Su script se cierra debido a-u
antes de llamargetopts
.