script shell, pb de tests

script shell, pb de tests - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-04-2004 à 10:28:50    

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.

Reply

Marsh Posté le 27-04-2004 à 10:28:50   

Reply

Marsh Posté le 27-04-2004 à 10:34:30    

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 ::
Reply

Marsh Posté le 27-04-2004 à 11:04:27    

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

Reply

Marsh Posté le 27-04-2004 à 11:52:41    

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

Reply

Marsh Posté le 27-04-2004 à 13:01:40    

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


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

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed