script bash

4 réponses
Avatar
Tahar BEN ACHOUR
Bonjour =E0 tous, =0A=0AUne petite question en bash,=0A=0AJe voudrais savoi=
r comment faire pour =E9chapper les ' ' afin que ma variable soit =0Aprise =
en compte, =0A=0A=0Avoici mon script, en fait c'est par rapport =E0 la com=
mande sed =0A=0Awhile read line=0Ado=0A=0Adomain=3D`echo $line | awk -F/ '{=
print($3".log")}'`=0Aecho $domain=0A=0Ased -i '/apache2/d' $line=0Ased -i =
'1iLogFile /srv/logs/$domain' $line=0A=0A=0Adone<myfile=0A=0A=0Aici=
je n'ai pas su comment echapper la quote pour que $domain soit prise en =
=0Acompte dans sed -i 1iLogFile /srv/logs/$domain' $line=0A=0A=0AMe=
rci pour votre aide=0A=0A=0A

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers debian-user-french-REQUEST@lists.debian.org
En cas de soucis, contactez EN ANGLAIS listmaster@lists.debian.org
Archive: http://lists.debian.org/658103.25938.qm@web26306.mail.ukl.yahoo.com

4 réponses

Avatar
Tahar BEN ACHOUR
Je fais ca en mettant ma variable entre double quote :

sed -i '1iLogFile /srv/logs/"$domain"' $line




Merci pour t on aide, mais ça ne marche pas ainsi j'obtiens "$domain" comme
résul tat




Attention, mes commandes sed sont souvent elles a ussi entre double quote (sed
"commande" fichier), je ne sais pas si ce la influe ou non.

Fred





merci





--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
MARTY
Tahar BEN ACHOUR wrote:
Bonjour à tous,



Bonjour,
Une petite question en bash,

Je voudrais savoir comment faire pour échapper les ' ' afin que ma variable soit
prise en compte,




[..]
sed -i '1iLogFile /srv/logs/$domain' $line

ici je n'ai pas su comment echapper la quote pour que $domain soit prise en
compte dans sed -i 1iLogFile /srv/logs/$domain' $line



Je fais ca en mettant ma variable entre double quote :

sed -i '1iLogFile /srv/logs/"$domain"' $line


Attention, mes commandes sed sont souvent elles aussi entre double quote
(sed "commande" fichier), je ne sais pas si cela influe ou non.

Fred

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
Tahar BEN ACHOUR
Merci beaucoup avec guillemets ça marche, je pensais pas qu'on pouvait remplacer
les quotes par des guillemets


Merci beaucoup pour vot re aide


De : FERRINO Maxime
À : debian-use
Envoyé le : Mer 7 juillet 2010, 18h 50min 26 s
Objet : Re: script bash


Bonjour.

Au lieu d'utiliser des apostrophes('), on peux utiliser des guillemets (").
Par exemple :
sed -i "1iLogFile /srv/logs/$domain" $line
Juxtaposer les ap ostrophes/guillemets marche aussi :
sed -i '1iLogFile /srv/logs/ '"$domain" $line
Tout ce qui est mis entre apostrophe est toujours pris littéralement, et il
n'est pas possible d'échapper quoi que ce soit.
La preuve en est que : echo ''
affiche bien un antislash.


Maxime.

Tahar BEN ACHOUR a écrit :
Bonjour à tous,

Une petite question en bash,

Je voudrais savoir comment faire pour échapper les ' ' afin que ma variable soit


prise en compte,


voici mon script, en fait c'est par rapport à la commande sed

while read line
do

domain=`echo $line | awk -F/ '{print($3".log")}'`
echo $domain

sed -i '/apache2/ d' $line
sed -i '1iLogFile /srv/logs/$domain' $line


done<myfile


ici je n'ai pas su comment echapper la quote pour que $domain soit prise en
compte dans sed -i 1iLogFile / srv/logs/$domain' $line


Merci pour votre aide













--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/
Avatar
MARTY
Tahar BEN ACHOUR wrote:



Je fais ca en mettant ma variable entre double quote :

sed -i '1iLogFile /srv/logs/"$domain"' $line





Merci pour ton aide, mais ça ne marche pas ainsi j'obtiens "$domain" comme
résultat



Et en mettant des double quote partout :

sed -i "1iLogFile /srv/logs/"$domain"" $line


?

Fred



Attention, mes commandes sed sont souvent elles aussi entre double quote (sed
"commande" fichier), je ne sais pas si cela influe ou non.

Fred






merci









--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists

Pour vous DESABONNER, envoyez un message avec comme objet "unsubscribe"
vers
En cas de soucis, contactez EN ANGLAIS
Archive: http://lists.debian.org/