Bonjour,
Mon script ne prend pas en compte mes conditions :
Peu importe ce que je rentre pour la variable "ficenv", il va me dérouler le script en entier..
Pouvez vous m'aider svp?
Merci![]()
Bonjour,
Mon script ne prend pas en compte mes conditions :
Peu importe ce que je rentre pour la variable "ficenv", il va me dérouler le script en entier..
Pouvez vous m'aider svp?
Merci![]()
Bonjour
1) Sur le forum, privilégie le copier/coller de ton code entre 2 balises "code"; plutôt que la capture d'écran.
2) Il faut lire et nous transmettre les messages d'erreur.
3) Il y a une commande entre le if condition et le then. Ceci est une erreur. N'est-ce pas ?
4) Tu devrais mettre tes variables texte entre double quotes. Sinon, un utilisateur entrant un espace dans sa réponse va faire hurler ton script.
5) echo "$message"; read toto se résume par
Code : Sélectionner tout - Visualiser dans une fenêtre à part if [ "$ficenv" = "v" ]; then6) Si tu veux une seule lettre en entrée du "read", tu peux utiliser l'option "-n"
Code : Sélectionner tout - Visualiser dans une fenêtre à part read -p "message" toto
Cela n'attend plus le retour chariot.
Code : Sélectionner tout - Visualiser dans une fenêtre à part read -n 1 -p "f ou v ?" ficenv
7) Le shebang doit être sur la première ligne. Sinon, ce n'est qu'un commentaire.
Merci pour ton aide.
Le shebang est bien sur la première ligne, c'est juste l'affichage qui est fait comme ça..
Quelle est l’importance de tes ";" dans tes exemples?
Voilà ce que j'ai modifié du coup :
Et voilà mon message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #!/bin/bash echo "Saisir l'option que vous désirez, f pour fichier, v pour variable" read ficenv echo "Saisir votre chaine de caractère, si vous avez choisit f, entrez le chem$ read chaine #debut du 1er cas avec env if [ "$ficenv" = "v" ] then echo "Voici les résultats dans la commande env" env | grep -n $chaine echo "Voici les résultats dans la commande set" set | grep -n $chaine #debut du 2eme cas avec fichier elif [ "$ficenv" = "f" ] then ps r $chaine else echo "Il faut rentrer f ou v" fi
scriptlinux.sh: ligne 18: erreur de syntaxe près du symbole inattendu « elif »
scriptlinux.sh: ligne 18: `elif [ "$ficenv" = "f" ]'
Je débute tout juste en script, donc je fais des erreurs bêtes aha
Merci encore
Les points virgules remplacent le fait d'aller à la ligne.
Dans ton code, la commande "echo" renvoie toujours vrai, donc le code juste après "then" est toujours exécuté, quelque soit le code entre "if" et "echo".
Dans ton nouveau code, il manque un ";" avant le then. (Ou un retour à la ligne, donc)
Merci beaucoup, ça fonctionne comme je le voulais![]()
Pour tester la valeur de $ficenv tu aurais pu utiliser l'opérateur case plutôt qu'une série de if..elif..else![]()
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Partager