Bonjour,
Mon script ne prend pas en compte mes conditions :
Pièce jointe 485314
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 :)
Version imprimable
Bonjour,
Mon script ne prend pas en compte mes conditions :
Pièce jointe 485314
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 :coucou:
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 parCode:if [ "$ficenv" = "v" ]; then
6) Si tu veux une seule lettre en entrée du "read", tu peux utiliser l'option "-n"Code:read -p "message" toto
Cela n'attend plus le retour chariot.Code: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:
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 ;)
C'est noté, je vais me pencher un peu plus là dessus :)
Bonjour :D
Grace à vous, voici comment à avancer mon exercice !
Pour la deuxième partie du script, je dois faire en sorte qu'il exécute un fichier exécutable (et qu'il affiche les informations du processus) avec le chemin spécifié dans la commande : nomduscript.sh f <chemin>
Pour les informations, je pensais utiliser la commande "ps", cela dit je ne sais pas trop comment l'utiliser, ni trop comment lancer l’exécutable..
Si vous pouviez me mettre sur la voie ce serait parfait !
Merci encore à vous.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 #Vérification du nb de paramètres fournit par l'utilisateur case $# in 0) echo "Vous devez spécifier des paramètres" echo "Syntaxe : v <chaine de caractère> ou f <chemin du fichier>" echo "Si vous choisissez v, le script cherchera votre chaine de caractère dans la commande set & env" echo "Si vous choisissez f, le script exécutera le fichier spécifier par votre chemin et affichera ses informations";; 1) echo "Il manque un paramètre";; 2) echo "Votre script va s'éxécuter";; *) echo "Vous avez renseigné trop de paramètres" esac if [ "$1" = "v" ] then echo echo "Voici les résultats dans la commande env" env | grep -n $2 echo echo "Voici les résultats dans la commande set" set | grep -n $2 #début du script pour le cas 2 elif [ "$1" = "f" ] then echo "script en cours de création" else echo "Il faut saisir l'option f ou v" fi
Exemple :Note bien l'utilisation de $!.Code:
1
2
3
4
5
6
7 $ ps -p 5544 -o pid,uname,pcpu,pmem,comm PID USER %CPU %MEM COMMAND 5544 flodelarab 3.7 2.4 firefox-esr $ sleep 10 & ps -p $! -o pid,uname,pcpu,pmem,comm [1] 7873 PID USER %CPU %MEM COMMAND 7873 florian 0.0 0.0 sleep
Pour plus d'infos :
D'autre part, pour tout fichier, il suffit de l'appeler, s'il a les droits d'exécution.Code:man bash
Merci beaucoup.
Je test ça et te fais un retour :p
Modification : Tout est ok ! Merci encore !