[Shell] problème lié aux variables positionnelles
Résolu
jrdz
-
jrdz -
jrdz -
Bonjour,
Je suis débutant en script shell. Voici mon script shell
Je voudrais qu'il m'affiche
Il s'obstine à afficher seulement
Merci pour vos conseils
Je suis débutant en script shell. Voici mon script shell
bof.sh, qui est en réalité une partie d'un script plus long.
#!/bin/bash rang=2 echo "$@" trouve() { iter=1 shift echo "rang cherché $rang " for i in "$@" do if [[ $iter = $rang ]] then echo " $i" break fi ((iter=iter+1)) done return } trouve $rang $@
Je voudrais qu'il m'affiche
b clorsque je le fais fonctionner avec :
./bof.sh a 'b c' d
Il s'obstine à afficher seulement
b.
Merci pour vos conseils
A voir également:
- [Shell] problème lié aux variables positionnelles
- Classic shell - Télécharger - Personnalisation
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Shell startup windows 10 - Guide
- Shell infrastructure host c'est quoi - Guide
- Shell do while ✓ - Forum Shell
1 réponse
Bonjour,
N'oublie pas d'entourer ton code avec les balises de code (4e bouton au dessus de la boîte dans laquelle tu tapes ton message). Veille également à l'indenter correctement.
Pour résoudre ton problème, il suffit de s'inspirer de ce lien.
Note que pour passer
Enfin, note qu'en toute rigueur et comme expliqué dans ce lien, tu es supposé utilisé l'opérateur
Bonne chance
N'oublie pas d'entourer ton code avec les balises de code (4e bouton au dessus de la boîte dans laquelle tu tapes ton message). Veille également à l'indenter correctement.
Pour résoudre ton problème, il suffit de s'inspirer de ce lien.
#!/bin/bash rang=2 echo "$@" trouve() { iter=1 shift echo "rang cherché $rang" for var in "$@" do if [[ "$iter" -eq "$rang" ]] then echo "$var" break fi ((iter=iter+1)) done } trouve $rang "$@"
Note que pour passer
$@à la fonction
trouve, les guillemets sont importants. De manière générale, je t'invite à ne pas injecter le contenu d'une variable shell sans l'entourer de guillemets, car cela permet potentiellement d'injecter du code frauduleux, ou dans le cas présent, peut mener à des comportements autre que celui prévu.
Enfin, note qu'en toute rigueur et comme expliqué dans ce lien, tu es supposé utilisé l'opérateur
-eqpour faire une comparaison numérique.
Bonne chance
jrdz
merci , problème résolu ; merci pour les liens en particulier pour le 2ième qui m'a aussi aidé