[script shell ] petits scripts
tarikbenn
Messages postés
110
Statut
Membre
-
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
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 .. )
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 .. )
A voir également:
- [script shell ] petits scripts
- Script vidéo youtube - Guide
- Classic shell - Télécharger - Personnalisation
- Ghost script - Télécharger - Polices de caractères
- Mas script - Accueil - Windows
- Script cmd - Guide
6 réponses
Salut,
en attendant la réponse de jipicy ;)
while [ ! 'a' || ! 'z' ]
tu dois tester le contenu de la variable, et tu ne le fait pas
'a' et 'z' ne sont que des caractères (donc tu testes des constantes)
Tu dois tester si le contenu de la variable et 'a' ou 'z'
A c'est la variable
$A c'est son contenu
je ne suis pas sous linux pour tester. A toi de faire les modifications ;)
lami20j
en attendant la réponse de jipicy ;)
while [ ! 'a' || ! 'z' ]
tu dois tester le contenu de la variable, et tu ne le fait pas
'a' et 'z' ne sont que des caractères (donc tu testes des constantes)
Tu dois tester si le contenu de la variable et 'a' ou 'z'
A c'est la variable
$A c'est son contenu
je ne suis pas sous linux pour tester. A toi de faire les modifications ;)
lami20j
Salut Lami20j
J'ai essayé plusieurs syntaxes ( $A != 'a' ...$A ! 'a' ... )
mais aucune ne marche ...
Donc pas de blindage pour le moment ...
Sinon j'ai une deuxieme question :
Comment faire pour creer , dans un script shell , un fichier dans lequel on ecrira "toto va a l'école" ?
Merci d'avance
J'ai essayé plusieurs syntaxes ( $A != 'a' ...$A ! 'a' ... )
mais aucune ne marche ...
Donc pas de blindage pour le moment ...
Sinon j'ai une deuxieme question :
Comment faire pour creer , dans un script shell , un fichier dans lequel on ecrira "toto va a l'école" ?
Merci d'avance
Le script qui répond à ma première question est le suivant :
#!/usr/bin/ksh
unset A
while $A != 'a' && $A != 'z'
do
echo "A?"
read A
done
Mais je n'ai pas celui qui répond à ma deuxième question :
Comment faire pour creer , dans un script shell , un fichier dans lequel on ecrira "toto va a l'école" ?
Merci d'avance :)
#!/usr/bin/ksh
unset A
while $A != 'a' && $A != 'z'
do
echo "A?"
read A
done
Mais je n'ai pas celui qui répond à ma deuxième question :
Comment faire pour creer , dans un script shell , un fichier dans lequel on ecrira "toto va a l'école" ?
Merci d'avance :)
#!/bin/bash echo "toto va à l'école?" > fichier
essaye -ne au lieu de !=
lami20j
En shell "ksh" (par rapport au shell bash), tu as aussi la possibilité de mettre un drapeau (noclobber) pour empêcher l'écrasement des fichiers en redirection (extrait du man ksh) :
> file
standard output is redirected to file. If file does not exist,
it is created; if it does exist, is a regular file and the
noclobber option is set, an error occurs, otherwise the file is
truncated. Note that this means the command cmd < foo > foo
will open foo for reading and then truncate it when it opens it
for writing, before cmd gets a chance to actually read foo.
>| file
same as >, except the file is truncated, even if the noclobber
option is set.
>> file
same as >, except the file an existing file is appended to
instead of being truncated. Also, the file is opened in append
mode, so writes always go to the end of the file (see open(2)).;-))
Merci les gars pour vos réponses !
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:
titi
toto
tata
titi
toto
tata
titi
aretertertzrgg/
QSdsfdsfqdf/
Qqsdqfdg/
et ajouter a la suite des lignes 8 , 9 et 10 les mots suivants: abc , def et gki.
Merci d'avance
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:
titi
toto
tata
titi
toto
tata
titi
aretertertzrgg/
QSdsfdsfqdf/
Qqsdqfdg/
et ajouter a la suite des lignes 8 , 9 et 10 les mots suivants: abc , def et gki.
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
J'étais en train de faire les tests et j'ai pondu le même script que le tien à quelques crochets prés ;-))
J'étais en train de faire les tests et j'ai pondu le même script que le tien à quelques crochets prés ;-))
echo "A?" read A while [ "$A" != "a" ] && [ "$A" != "z" ] do echo "A?" read A doneVoilou :-)
Re,
et si tu remplaces la ligne avec sed avec une ligne avec perl?!
et si tu remplaces la ligne avec sed avec une ligne avec perl?!
$ cat tarikkben.txt titi toto tata titi toto tata titi aretertertzrgg/ QSdsfdsfqdf/ Qqsdqfdg/ $ perl -pi.bak -e '8..8?s/(.*)/$1abc/:9..9?s/(.*)/$1def/:10..10?s/(.*)/$1ghi/:s/(.*)/$1/' tarikkben.txt $ cat tarikkben.txt titi toto tata titi toto tata titi aretertertzrgg/abc QSdsfdsfqdf/def Qqsdqfdg/ghi lami20j@debian:~/trash$lami20j