J’ai besoin de vérifier l’existence d’un argument d’entrée. J’ai le script suivant :
Je reçois
Comment puis-je vérifier l’entrée argument1 tout d’abord pour voir si elle existe ?
J’ai besoin de vérifier l’existence d’un argument d’entrée. J’ai le script suivant :
Je reçois
Comment puis-je vérifier l’entrée argument1 tout d’abord pour voir si elle existe ?
C'est vrai :
``variable vous indiquera le nombre d’arguments d’entrée, que le script a été adopté
EDIT
Ou vous pouvez vérifier si un argument est une chaîne vide ou pas comme :
Le `` commutateur permettra de tester si l’expansion du « $1 » est une chaîne nulle ou non. Si c’est une chaîne nulle, puis le corps est exécuté.
Si vous êtes uniquement intéressé par puisage si un argument est absent, le Paramètre de Substitution 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
Dans certains cas, vous devez vérifier si l'utilisateur est passé d'un argument au script, et si non, revenir à une valeur par défaut. Comme dans le script ci-dessous:
scale=${2:-1}
emulator @$1 -scale $scale
Ici, si l'utilisateur n'a pas transmis scale
comme un 2ème paramètre, je lance émulateur Android avec -scale 1
par défaut. ${varname:-word}
est un opérateur d'extension. Il y a d'autres l'expansion des opérateurs ainsi:
${varname:=word}
qui définit l'indéfini varname
au lieu de renvoyer l' word
de la valeur;${varname:?message}
qui renvoie varname
si elle est définie et n'est pas null ou imprime l' message
et abandonne le script (comme le premier exemple);${varname:+word}
qui renvoie word
seulement si l' varname
est défini et n'est pas null; retourne null sinon.Pour un noob, surtout quelqu'un qui vient d'une non script contexte, il est également important de mentionner quelques particularités au sujet de ces choses. Comme quand phoxis mentionné la façon dont il doit être fait
if [ $# -eq 0 ]
il aurait pu aussi mentionner que nous avons besoin d'un espace après l'ouverture et la fermeture de corset. Sinon, les choses ne fonctionnent pas. Je suis moi-même un script de noob (je viens de C en arrière-plan) et il a trouvé le chemin difficile. C'est seulement lorsque j'ai décidé de copier la totalité de la chose "comme est" que les choses travaillé pour moi. C'est alors que je compris que je devais laisser un espace après l'accolade d'ouverture et avant la fermeture. Oui je pouvais avoir regardé dans les détails de "si" mais la plupart des gens qui viennent à stackoverflow faire pour obtenir une réponse rapide de choses (pas tous). Par conséquent préciser quelques petites choses serait de le rendre encore meilleur.
Juste un avis.
Une autre façon de détecter si les arguments passés au script:
((!$#)) && echo No arugments supplied!
Notez que (( expr ))
les causes de l'évaluation de l'expression que par les règles de la Coquille de l'Arithmétique.
Pour la sortie en l'absence d'arguments, on peut dire:
((!$#)) && echo No arugments supplied! && exit 1
Un autre (par analogie) façon de dire ci-dessus serait:
let $# || echo No arguments supplied
let $# || { echo No arguments supplied; exit 1; } # Exit if no arguments!
help let
dit:
let: let arg [arg ...]
Evaluate arithmetic expressions. ... Exit Status: If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise.
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.