Bonsoir, demain j'ai un contrôle et j'essaye de m'entrainer à faire des scripts :
Je bloque pour ce script :
Exercice 2 : et-ou
Écrivez deux scripts et.sh et ou.sh, permettant de reproduire le comportement des opérateurs && et || à
l’aide de boucles. Les commandes à exécuter (sans argument) seront passées en paramètres du script l’une
après l’autre.
Voici mon code, comment je fait pour faire exécuter l'argument ? Quand je met simplement $i j'ai une erreur
#!/bin/sh
if [ $# -ge 1 ]
then for i
do $i
done
if [ $? -ne 0 ]
then do
shift 1
$i
done
else
echo "commande non valide"
fi
exit 1
fi
exit 0
# Bonne nuit !
Posté par _kaos_ . Évalué à 1. Dernière modification le 04 novembre 2014 à 19:47.
Relis ton code et/ou cours, regarde bien ce que fais la commande
shift
, vérifie tes ouvertures et fermetures de boucles, etc.Ça, c'est pour la partie "aide".
Sinon :
Là, on ne va pas pouvoir grand chose pour toi… si tu bloque à l'exercice 2 pour un contrôle demain, je te conseillerai plutôt de te pencher sur l'option : trouver une bonne excuse pour sécher, et te représenter au rattrapage (s'il y a) en t'y étant pris à temps pour réviser…
Matricule 23415
[^] # Re: Bonne nuit !
Posté par Ubis . Évalué à 1.
En fait j'ai réussi tout les autres exercices, c'est à celui la que je ne sais pas comment faire
Sinon cette partie du code est-elle correcte ?
[^] # Re: Bonne nuit !
Posté par _kaos_ . Évalué à 1. Dernière modification le 04 novembre 2014 à 20:42.
Mettons que tous les autres exos soient corrects.
Déjà, il faut dire quelle est l'erreur (sinon, pas facile de deviner si c'est du sh, du bash, du zsh…).
En bash, en prenant ton script, j'ai :
Syntax error: "do" unexpected
Donc revoir la structure des boucles, l'indentation éventuellement, même si ça ne joue pas (trop).
Eventuellement : poste en pseudo-code (donc met le shell de côté). On verra ce que ça donne, déjà.
Matricule 23415
[^] # Re: Bonne nuit !
Posté par Ubis . Évalué à 1.
J'ai réussi pour la correction du do :
Par contre quand j’exécute le script :
J'obtiens deux fois la date à la fin alors que je ne la veux qu'une seule fois ?
[^] # Re: Bonne nuit !
Posté par _kaos_ . Évalué à 1.
Encore une fois, c'est tout à fait normal.
Simplifie encore plus tes vérifications (regarde ce que vaut $i plutôt que de l'exécuter).
Fais un code pseudo-code.
Je ne peux pas t'aider plus sans te donner la solution :)
Matricule 23415
[^] # Re: Bonne nuit !
Posté par Ubis . Évalué à 1.
Finalement :
ça fonctionne mais j'aurais quand même voulu savoir comment enlever la sortie d'erreur lorsque l'on entre une commande qui n'existe pas
Je sais qu'il faut rediriger vers >&2 dev/null mais c'est quoi que je dois rediriger ?
Exemple :
./ouu.sh date me
mardi 4 novembre 2014, 21:54:24 (UTC+0100)
./ouu.sh: line 15: me : commande introuvable <- je veux enlever cette ligne
[^] # Re: Bonne nuit !
Posté par _kaos_ . Évalué à 1.
Tu es parti sur une mauvaise piste pour ce soir :)
Ne t'acharne pas sur le shell… il est miné pour ce que tu en fais !
C'est quand même délire, tu demande de l'aide, je t'en propose en simplifiant l'approche et te proposant de t'aider si tu fais un effort, comme mettre en pseudo-code, et tu t'obstine à rester sur des erreurs qui ne vont rien résoudre, si ce n'est t'enfoncer dans des méandres dont tu n'as rien à faire pour le moment :)
J'en reviens donc à ma proposition initiale. Cherche une bonne excuse pour demain.
Genre : Ton chien est mort ?
Toi : Oui, mais il a beaucoup souffert.
Matricule 23415
[^] # Re: Bonne nuit !
Posté par Ubis . Évalué à 1.
J'abandonne, je suis obligé d'aller à l'exam
[^] # Re: Bonne nuit !
Posté par _kaos_ . Évalué à 1.
Fais bien comme ça, si ta présence est obligatoire.
Note pour plus tard de revenir et faire un feedback de ce qui a foiré. Ou ce qui aurait pu être mieux. ;)
Matricule 23415
[^] # Re: Bonne nuit !
Posté par Anonyme . Évalué à 2.
sinon une bonne lecture de man bash/sh/ksh devrait te mettre sur la voie pour la ligne d'erreur à effacer
[^] # Re: Bonne nuit !
Posté par totof2000 . Évalué à 2. Dernière modification le 05 novembre 2014 à 12:24.
Pour ceux qui ne connaissent pas et qui ont besoin d'excuses.
Dans le même genre il y a ça pour essayer de masquer ton ignorance à l'examen et ça pour le correcteur s'il te met une mauvaise note (il y a plusieurs variantes)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.