Jump to content

[RESOLU] petits scripts shell


tarikbenn

Recommended Posts

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 .. )

Link to comment
Share on other sites

#!/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

Link to comment
Share on other sites

#!/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

Link to comment
Share on other sites

#!/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 ;)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...