Script shell en utilisant des conditions
Résolu/Fermé
flipmode62
Messages postés
49
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2010
-
3 déc. 2008 à 17:27
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 3 déc. 2008 à 18:33
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 3 déc. 2008 à 18:33
A voir également:
- Script shell en utilisant des conditions
- Script vidéo youtube - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Mas script - Accueil - Windows
- Mise en forme conditionnelle excel plusieurs conditions - Guide
4 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
3 déc. 2008 à 17:57
3 déc. 2008 à 17:57
Salut,
Change les délimiteurs de la commande de substitution.
Modifie :
Change les délimiteurs de la commande de substitution.
Modifie :
s/=.*/=$(echo $var1)/en :
s|=.*|=$(echo $var1)|;-))
XxTitxX
Messages postés
1176
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
30 août 2012
246
3 déc. 2008 à 17:31
3 déc. 2008 à 17:31
Tiens tu peux t'aider de ça ...
http://fr.wikipedia.org/wiki/Test_(Unix)
http://fr.wikipedia.org/wiki/Test_(Unix)
flipmode62
Messages postés
49
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2010
3 déc. 2008 à 17:50
3 déc. 2008 à 17:50
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
........................
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
3 déc. 2008 à 18:13
3 déc. 2008 à 18:13
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 :
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
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...
flipmode62
Messages postés
49
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2010
>
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
3 déc. 2008 à 18:28
3 déc. 2008 à 18:28
Merci 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
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 898
>
flipmode62
Messages postés
49
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2010
3 déc. 2008 à 18:33
3 déc. 2008 à 18:33
La 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>";-))
flipmode62
Messages postés
49
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
20 mai 2010
3 déc. 2008 à 18:10
3 déc. 2008 à 18:10
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
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