Script shell en utilisant des conditions

Résolu
Bonjour,

J'aimerai créer un script shell en utilisant des conditions mais ça ne marche pas :(

if [ var1 > "1200" ]; then
var1="<b><font color=#0c00ff>$var1</font></b>"
else
var1="<b><font color=#ce0000>$var1</font></b>"
fi


Merci pour votre aide

Flipmode
Configuration: Linux Red Hat
Firefox 1.5.0.12

4 réponses

  1. Tiens tu peux t'aider de ça ...
    http://fr.wikipedia.org/wiki/Test_(Unix)
    0
    1. Mon script est de la forme:

      ........................
      if [ var1 < 1200 ]; then
      var1="\"<b><font color=#0c00ff>$var1</font></b>\""
      else
      var1="\"<b><font color=#ce0000>$var1</font></b>\""
      fi

      ......................
      ......................
      sed -i.bak "/localhost/,/}/{
      /^label_text/{s/=.*/=$(echo $var1)/}
      }

      ......................
      .....................

      Quand j'execute mon script, j'ai l'erreur :
      sed: -e expression #1, char 70: unknown option to `s'

      Si j'affiche var1, j'obtiens:

      echo $var1
      <b><b><font color=#0c00ff> 8533</font></b>


      Donc le probléme dans mon script est au niveau de:
      sed -i.bak "/localhost/,/}/{
      /^label_text/{s/=.*/=$(echo $var1)/}
      }


      C'est le meme problème que: http://www.commentcamarche.net/forum/affich 9693322 script pour ecrire dans un fichier texte

      Mais je n'arrive pas à régler ce probléme

      Merci

      Flipmode
      0
      1. Modérateur
        Ta condition ne marche pas non plus ;-((

        if [ var1 < 1200 ]; then
        var1="\"<b><font color=#0c00ff>$var1</font></b>\""


        echo $var1
        <b><b><font color=#0c00ff> 8533</font></b>


        C'est à cause que la comparaison arithmétique se fait soit de cette façon :
        if [ "$var1" -lt "1200" ]; then...

        soit (attention il ne faut pas d'espace entre les 2 crochets ouvrants, je le mets uniquement pour palier un bug dans la mise en forme des balises par le code interne de CCM) :
        if [ [ $var1 < 1200 ]]; then...
        0
      2. @jipicyMerci pour ta réponse
        Mon test ne marchait pas :(
        Il ne changeait pas la couleur de mon texte! Avec les doubles [] ça fonctionne bien :)

        Et en mettant: s|=.*|=$(echo $var1)| à la place de s/=.*/=$(echo $var1)/ ça marche

        Par contre quand je fais:echo $var1
        <b><font color=#0c00ff> 8533</font></b>


        Dans mon script j'utilise la commande:
        sed -i.bak "/localhost/,/}/{
        /^label_text/{s/=.*/=$(echo $var1)/}
        }


        Dans mon fichier, il met: label_text="<b><font color=#0c00ff> 8533</font></b>" alors que je voudrais qu'il mette label_text=<b><font color=#0c00ff> 8533</font></b> (sans les " ")

        Comment je peux faire pour changer ça?

        Merci

        Flipmode
        0
      3. Modérateur
        @flipmode62La réponse est dans ta déclaration de la vaiable :
        var1="\"<b><font color=#0c00ff>$var1</font></b>\""
        il suffit d'enlever les quotes doubles protégées par un anti-slash :
        var1="<b><font color=#0c00ff>$var1</font></b>" 
        ;-))
        0
    2. Modérateur
      Salut,

      Change les délimiteurs de la commande de substitution.
      Modifie :
      s/=.*/=$(echo $var1)/
      en :
      s|=.*|=$(echo $var1)|
      ;-))
      1
      1. Merci :)

        En mettant: s|=.*|=$(echo $var1)| à la place de s/=.*/=$(echo $var1)/ ça marche

        Quand je fais:echo $var1
        <b><font color=#0c00ff> 8533</font></b>


        Mais dans mon fichier, quand j'utilise la commande:
        sed -i.bak "/localhost/,/}/{
        /^label_text/{s/=.*/=$(echo $var1)/}
        }


        Il met: label_text="<b><font color=#0c00ff> 8533</font></b>" alors que je voudrais qu'il mette label_text=<b><font color=#0c00ff> 8533</font></b> (sans les " ")

        Comment je peux faire pour changer ça?

        Merci

        Flipmode
        0