Voici un exemple, dans lequel $1
ne fonctionne pas.
$ cat ~/myScript
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello
$ ./myScript
Hello
Voici un exemple, dans lequel $1
ne fonctionne pas.
$ cat ~/myScript
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello
$ ./myScript
Hello
Considérez les fonctions comme des mini-scripts à l'intérieur d'un scripts. Ils sont ignorés par le script jusqu'à ce qu'ils soient appelés. Ainsi, les paramètres positionnels sont ignorés jusqu'à ce qu'ils soient transmis à la fonction.
Ils sont cependant limités dans ce qu'ils peuvent faire. Je sais qu'ils ne peuvent pas soutenir if then
à l'intérieur de la fonction car elles sont ignorées. Et il y a d'autres règles, mais vous pouvez exit
votre script à l'intérieur d'une fonction. Si vous avez des vérifications d'erreurs avec des paramètres, celles-ci doivent être effectuées avant l'appel de la fonction.
Vous voulez passer des paramètres positionnels ($1, $2, $3 etc...) dans votre script. Cependant, vous vous attendez à ce que le paramètre positionnel soit passé à la fonction. Sans spécifier le paramètre lorsque vous appelez la fonction, la fonction ne reçoit pas le paramètre. Vous devez lui transmettre le paramètre.
Prenez votre script :
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello
Il suffit d'ajouter un $1
à la ligne qui dit juste hello
par lui-même fera en sorte que le paramètre soit passé à la fonction.
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello $1
Maintenant, appeler le script avec un paramètre produira la sortie désirée :
$ ./myscript Terrance
Hello Terrance
Si vous voulez lui ajouter une vérification rapide pour qu'il ne prenne pas d'entrée vide après le script, ajoutez la vérification suivante dans votre script avant l'appel :
#!/bin/bash
function hello () {
echo "Hello $1"
}
if [[ $1 != "" ]]; then
hello $1
exit
else
echo "Please input a name. Example: $0 Terrance"
fi
Mon exemple script ci-dessus fait une vérification de !=
ce qui signifie not equal to
alors les deux ""
signifie blanc. Donc, if parameter 1 is not equal to blank then
est vrai alors il exécute l'appel de fonction avec le paramètre puis quitte le script après l'appel de la fonction. Sinon, il donne mon message d'erreur. Le paramètre positionnel de $0
est le paramètre de la commande que vous venez d'appeler.
Exemples d'appels de mon script :
$ ./myscript
Please input a name. Example: ./myscript Terrance
$ ./myscript Terrance
Hello Terrance
En continuant à écrire des scripts, vous commencez à apprendre plus d'astuces et de commandes appropriées et comment elles sont utilisées. Continuez à écrire des scripts !
J'espère que cela vous aidera !
Il fonctionne, mais peut-être ne l'utilisez-vous pas comme vous le devriez. $1 fait référence au premier paramètre de la fonction.
function hello () { echo "Hello $1" }
déclare une fonction de sorte que lorsque vous l'appelez avec des paramètres, elle imprime "Hello" et le premier paramètre :
hello WORLDDD
imprime "Hello WORLDDD"
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.