Aller au contenu

[RESOLU] petits scripts shell

Featured Replies

Posté(e)

Salut tous le monde

J'ai besoin de faire un script shell qui fait certaines fonctions . Je veux le faire moi même , mais je serai amener à poser des questions ( j'en ai deja une )

Mais je dois faire ce script dans un minimum de temps ( c'est trop urgent : avant la fin de la journée )

Je vous remercie tous pour votre compréhension

et à tout de suite.

Première question : Pourquoi le script suivant m'affiche des erreurs :

#!/usr/bin/ksh
echo "A?"
read A
while [  ! 'a' ||  ! 'z' ]
do
  echo "A?"
  read A
done

En gros je veux blinder la saisie , pour que l'utilisateur ne tape que soit a soit z.

les erreurs qu'il m'affiche sont les suivantes :

./test2[4]: test: ] missing

./test2[4]: z: not found

( ou alors , juste comment faire pour qu'il ne les affiche plus ... une option ou .. )

Posté(e)
  • Auteur

#!/usr/bin/ksh
unset A
while [[ $A  != 'a' && $A  != 'z' ]]
do
  echo "A?"
  read A
done

Hello Theocrite

Ca marche à la perfection :D

J'ai une autre question :

Comment faire pour creer , dans un script shell , un fichier dans lequel on ecrira "toto va a l'école" ?

Merci d'avance

Posté(e)
  • Auteur

#!/usr/bin/ksh
unset A
while [[ $A  != 'a' && $A  != 'z' ]]
do
  echo "A?"
  read A
done

Il me reste une dernière question avant la fin de la journée :

Comment, a partir d'un script shell, faire pour aller dans un fichier

qui contient les choses suivantes:

<ital>titi

toto

tata

titi

toto

tata

titi

aretertertzrgg/

QSdsfdsfqdf/

Qqsdqfdg/ </ital>

et ajouter a la suite des lignes 8 , 9 et 10 les mots suivants: abc , def et gki.

Merci d'avance

Posté(e)
  • Auteur

#!/usr/bin/ksh
unset A
while [[ $A  != 'a' && $A  != 'z' ]]
do
  echo "A?"
  read A
done

Hello Théocrite

J'ai une dernière question avant la fin de la journée :)

Je te donne le script que je lance ( et qui est sensé ajouter le nom , la version et la version du machin à la fin des trois dernières lignes du fichier /start/test/fichier.conf )

#!/usr/bin/ksh 
echo "taper le nom " 
read NOM 
echo "taper la version " 
read VERSION 
echo "taper la version du machin" 
read VERSION_M 
sed -i.bak '8s/.*/&${NOM}/;9s/.*/&${VERSION}/;10s/.*/&${VERSION_M}/'/start/test/fichier.conf 
cat /start/test/fichier.conf 

Mais ca ne marche malheureusement pas.

Je recois le message d'erreur suivant:

sed: illegal option -- i

Est ce que tu vois comment débugger mon script ?

Please help ;)

Posté(e)

1/ Pense à mettre des balises [ CODE] [ /CODE] autour de ton code.

2/ Matte les tutos sur le web un peu

http://wooledge.org/mywiki/BashFaq#faq37

http://www.kornshell.com/doc/

3/ Les réponses :

echo "mon texte" > Mon_fichier

pour créer un fichier

echo "abc
def
ghi" >> Mon_fichier

Pour rajouter des lignes à la fin de ton fichier.

L'option -i.bak est une option de perl. Tu peux faire du remplacement en sed ou en perl au choix, mais il faut rester cohérent.

EDIT : C'est aussi une option sur les derniers sed, mais comme tu dois bosser sur un viel unix pourri, l'option n'est pas implémentée.

Posté(e)

Je traduis : avant la fin des heures de TP, faites-moi mon exercice de bash...

On dirait :p

Le pire c'est qu'il risque d'y en avoir de plsu en plus. vive le net dans les fac :zarb:

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.