Vérifiez le nombre d'arguments passés à un script Bash

Je voudrais que mon script Bash pour imprimer un message d'erreur si l'argument du nombre n'est pas respecté.

J'ai essayé le code suivant:

#!/bin/bash
echo Script name: $0
echo $# arguments 
if [$# -ne 1]; 
    then echo "illegal number of parameters"
fi

Pour une raison inconnue, j'ai l'erreur suivante:

test: line 4: [2: command not found

Ce que je fais mal?

  • Vous ne devriez pas le nom de votre script test. C'est le nom d'une norme de commande Unix, vous ne voulez pas d'ombre.
  • Toujours utiliser des espaces autour de '[' ('[[') ou '(' ('((') dans les cas énoncés dans bash.
  • Pour ajouter à @zoska commentaire, il vous faut un espace avant [ parce qu'il est implémenté comme une commande, essayez " qui ['.
  • le meilleur exemple est donné sur le lien ci-dessous: stackoverflow.com/questions/4341630/...
  • sûrement le nommant test est bien tant qu'il n'est pas sur le CHEMIN?
  • Oui, c'est vrai. Mais il ne faut pas oublier que si il le met dans le CHEMIN, ça ne marchera pas. Éviter d'utiliser le nom contourne ce problème.
  • Vous avez sans doute aussi envie de sortir avec un code de sortie non nulle après l'impression d'un message si le programme est lancé avec illégale d'un certain nombre de paramètres. Ce lien suggère que certaines personnes utiliser la commande "exit 64', où 64 signifie "ligne de commande utilisation de l'erreur". stackoverflow.com/a/1535733/1102730
  • Quelques commentaires. Assurez-vous de mettre de l'espace entre les crochets. bash est pointilleux à ce sujet. et assurez-vous que #!/bin/bash en haut du fichier, parce que certains système par défaut pour les plus âgés bourne shell /bin/sh qui est pas certains de la syntaxe du shell bash, mais assez similaire à déconner avec votre tête.

InformationsquelleAutor Naftaly | 2013-09-02