Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
578 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script shell, pb de tests

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

script shell, pb de tests

n°464668
Solt
Posté le 27-04-2004 à 10:28:50  profilanswer
 

Bonjour,
 
voilà, je suis pas encore trés afuté en script shell... et y'a des trucs que je n'arrive pas a faire... (je suis en ksh, mais je veux bien changer si il faut...)
 
1) tester si un fichier (un répertoire) n'existe pas
 
bien sur si je fais ca :

Code :
  1. function backup {
  2.         if [ -d ${HOME}/${HDBACK} ]
  3.         then
  4.                 echo "Rep ${HOME}/${HDBACK} existe déjà."
  5.         else
  6.                 mkdir ${HOME}/${HDBACK}
  7.                 echo "Rep ${HOME}/${HDBACK} n'existe pas."
  8.         fi
  9. }


j'ai bien mon test sauf que j'ai rien a mettre dans le then en réalité, je veux juste créer le répertoire s'il n'existe pas.
 
autre probleme, je veux tester si une variable contient une valeur:

Code :
  1. if [ $GATEWAY1 != "" ]; then
  2.         echo "GATEWAY=$GATEWAY1" >> ${IFCFGPATH}${VETH_1}
  3. fi


là ca marche sauf que ca renvoit une erreur si la variable n'existe pas.
 
j'ai un peu tout essayé, du genre "if [ -n $GATEWAY1 ]" "if [ -z $GATEWAY1 ]"  d'ailleurs les deux me renvoyaient toujours vrais... j'ai pas compris...
 
 
Ensuite: autre pb:
 
je veux modifier dans le fichier hostname mon nom d'hote, donc j'ai été obligé de faire ca:

Code :
  1. grep -v "HOSTNAME*" $SYSCONF >> ${SYSCONF}_tmp
  2. echo "HOSTNAME=$HOSTNAME" >> ${SYSCONF}_tmp
  3. cp -rf ${SYSCONF}_tmp $SYSCONFRES


car j'ai pas réussi a faire ce que je voulais avec sed (cad faire un sed qui remplace HOSTNAME=* par HOSTNAME=$HOSTNAME , je me retrouvais avec en sortie "HOSTNAME=ancien_nom=nouveau_nom" bon c'est clair j'ai trop de mal avec sed et awk mais ca m'étonerais que ca ne soit pas possible...)
 
voilà, si y'a une ame charitable prete a me partager un peu de son savoir, ca serait pas de refus...
 
merci bien.

mood
Publicité
Posté le 27-04-2004 à 10:28:50  profilanswer
 

n°464676
Tomate
Posté le 27-04-2004 à 10:34:30  profilanswer
 

1. ! pour inverser le resultat ;)
2. essaies if [ "X$GATEWAY1 != "X" ]; then ... avec un GATEWAY1="" avant bien sur (tout au debut koi)


---------------
:: Light is Right ::
n°464735
yannigperr
Posté le 27-04-2004 à 11:04:27  profilanswer
 

Test si le contenu d'une variable est nulle :
if [ -z $GATEWAY1 ]; then
  GATEWAY1=1;
fi
 
Test inverse :
if [ ! -d /tmp ]; then
  echo "existe pas !"
fi

n°464816
Solt
Posté le 27-04-2004 à 11:52:41  profilanswer
 

ah déjà merci pour le test inverse, j'avais essayé dans tous les sens mais pas avec un espace entre le ! et le -d ...
 
et vu que ca marche pas avec le -z, je vais tenter le "X..." c'est bidouille maos pkoi pas... :)
 
alors sinon, personne pour le sed? :)
 
en tt cas, déjà merci pour ca... rapide et tout...

n°464861
yannigperr
Posté le 27-04-2004 à 13:01:40  profilanswer
 

Essayes un truc comme ça :
 
echo "HOSTNAME=*" | sed s/HOSTNAME=\\*/HOSTNAME=$HOSTNAME/


Message édité par yannigperr le 27-04-2004 à 13:02:25

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  script shell, pb de tests

 

Sujets relatifs
script pour monter au demarrage des fichiersscript pour recuperer le resultat d'une commande
Utiliser un fichier texte dans un scriptshell au demarage de linux
Script connexion root[script] repérer doublons ?
script creation BAL CYRUS IMAP + LDAPScript en C Shell ---> besoin d'aide
Qmail -> Executer shell lors réception msg 
Plus de sujets relatifs à : script shell, pb de tests


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR