Bash, avertissement sans arguments et décisions de dossier

J’apprends bash.

Je voudrais faire un script simple qui, lorsqu’il n’est pas argumenté, montre un message. Et quand je donne des nombres en argument, s en fonction de la valeur, cela fait une chose ou une autre.

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

Merci

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 Bash-Scripting est plutôt bon. Malgré son nom, il traite les bases.

Si seulement intéressé à échapper 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 

Exemple

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

Résultat

 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 les arguments multiples si présents.

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

Vieux mais je 1.) besoin de plus de réponses et 2.) doivent indiquer que la réponse supérieure ne fonctionnera que pour une saisie numérique.

 if [[ $# == "" ]] ; then echo "something" exit 0 fi 

Cela fonctionnera avec n’importe quelle entrée. Faire -eq attend alors que l’entrée pour $ # soit un entier et se plaindra si c’est peut-être un fichier.