Comment vérifiez-vous si $*
est vide? En d'autres termes, comment vérifier si aucun argument n'a été fourni à une commande?
la source
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 si 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 voulez utiliser $*
( pas préférable ) alors,
if [ "$*" == "" ]; then
echo "No arguments provided"
exit 1
fi
Quelques explications:
La seconde approche n’est pas préférable car, dans les paramètres de position, l’extension se *
développe en partant des paramètres de position. Lorsque le développement se produit entre guillemets doubles, il 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. Donc, il y a des frais généraux supplémentaires.
D'autre part se #
développe au nombre de paramètres de position.
Exemple:
$ command param1 param2
Ici,
La valeur de $#
est 2 et la $*
chaîne de caractères "param1 param2" (sans les 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 la rubrique intitulée Paramètres spéciaux
if ! (($#)); ...
, ouif (($# == 0)); ...
, ouif [ $# -eq 0 ]; ...
, ou! (($#)) && ...
, ou(($#)) || ...
[ $# -eq 0 ]
est la forme la plus courante de l'IME. Il existe des cas limites où il"$#"
peut être vide: s'il existe un seul argument vide ou s'il y a plusieurs arguments vides et s'il$IFS
est vide."$*"
expression sera également évaluée""
si un seul""
paramètre a été passé. Mais la plupart du temps, vous ne vous en soucierez probablement pas.bash
. Vous utilisezsh
pour exécuter le script. Autant que je sache==
est valable uniquement enbash
.Si vous ne voulez perdre que si un argument particulier est manquant, la substitution de paramètre est excellente:
la source
c'est l'une des façons dont vous pouvez savoir que vous n'avez aucun argument
la source