Comment vérifiez-vous si $*
est vide? En d'autres termes, comment vérifier si aucun argument n'a été fourni à une commande?
Pour vérifier qu'aucun argument n'a été fourni à la commande, vérifiez la valeur de $#
variable alors,
if [ $# -eq 0 ]; then
echo "No arguments provided"
exit 1
fi
Si vous souhaitez utiliser $*
(pas préférable) puis,
if [ "$*" == "" ]; then
echo "No arguments provided"
exit 1
fi
Quelques explications:
La seconde approche n'est pas préférable car dans l'expansion des paramètres positionnels *
s'étend aux paramètres positionnels, en commençant par un. Lorsque l'expansion se produit entre guillemets doubles, elle se développe en un seul mot avec la valeur de chaque paramètre séparée par le premier caractère de la variable spéciale IFS. Cela signifie qu'une chaîne est construite. Il y a donc des frais supplémentaires.
D'autre part #
s'étend au nombre de paramètres positionnels.
Exemple:
$ command param1 param2
Ici,
Valeur de $#
est 2 et la valeur de $*
est la chaîne "param1 param2" (sans guillemets), si IFS n'est pas défini. Parce que si IFS n'est pas défini, les paramètres sont séparés par des espaces
Pour plus de détails man bash
et lire le sujet nommé Paramètres spéciaux
Si vous n'êtes intéressé par le baillage que si un argument particulier est manquant, Substitution de paramètre est parfait:
#!/bin/bash
# usage-message.sh
: ${1?"Usage: $0 ARGUMENT"}
# Script exits here if command-line parameter absent,
#+ with following error message.
# usage-message.sh: 1: Usage: usage-message.sh ARGUMENT