142 votes

Bash, avertissement de non-argumentation et décisions de cas

J'apprends Bash.

Je voudrais faire un script simple qui, lorsqu'il n'y a pas d'arguments donnés, montre un certain message. Et quand je donne des nombres comme argument,s dépendant de la valeur, ça fait une chose ou une autre.

Je voudrais également connaître des suggestions pour les meilleurs manuels en ligne pour les débutants à bash

Merci. Merci.

224voto

Thomas Points 63635
if [[ $# -eq 0 ]] ; then
    echo 'some message'
    exit 0
fi

case "$1" in
    1) echo 'you gave 1' ;;
    *) echo 'you gave something else' ;;
esac

Le guide avancé de script de bash est assez bon. En dépit de son nom, il traite les bases.

34voto

Pat Points 4681

Si seulement vous êtes intéressé par le renflouement si un argument particulier est manquant, la substitution de paramètre est grande :

#!/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

16voto

Trampas Kirk Points 888

Exemple :

 if [ -z "$*" ]; then echo "No args"; fi

RESULTAT

No args

Détails :

-z est l'opérateur unaire pour la longueur de la chaîne est zéro. $* est tous les arguments. Les citations sont pour la sécurité et encapsulent de multiples arguments si présents.

Utilisez man bash et recherchez (/key) pour "unary" pour plus d'opérateurs comme celui-ci.

1voto

Ryan Smith Points 334

Vieille mais j'ai des raisons de retravailler la réponse maintenant grâce à une certaine confusion antérieure :

if [[ $1 == "" ]] #Where "$1" is the positional argument you want to validate 

 then
 echo "something"
 exit 0

fi

Cela fera écho à "Quelque chose" s'il n'y a pas d'argument positionnel $ 1. Cela ne confirme pas que $ 1 contient des informations spécifiques.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X