# Ajouter des "" dans le texte d'une variable

**URL:** <https://www.debian-fr.org/t/ajouter-des-dans-le-texte-dune-variable/59862>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 6:42 UTC](https://www.debian-fr.org/t/ajouter-des-dans-le-texte-dune-variable/59862 "2016-02-21T18:42:59Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![\_seb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/_/90db22/32.png) [@\_seb](https://www.debian-fr.org/u/_seb)\
**Post date:** [Février 21, 2016, 6:42 UTC](https://www.debian-fr.org/t/ajouter-des-dans-le-texte-dune-variable/59862/1 "2016-02-21T18:42:59Z")

</div>

Bonjour,

Je voudrais arriver à produire un format JSON du style :

> [@](#):
>
> «&nbsp;Services&nbsp;» : { «&nbsp;apache2&nbsp;» : «&nbsp;running&nbsp;», «&nbsp;sshd&nbsp;» : «&nbsp;running&nbsp;», «&nbsp;php&nbsp;» : «&nbsp;not running&nbsp;»,

Le problème est qu’avec mon script je n’arrive pas a mettre des " j’obtiens :

> [@](#):
>
> Services: { apache2 : running, sshd : running, php : not running,

```auto
SERVICES[0]="apache2"
SERVICES[1]="sshd"
SERVICES[2]="php"

JSON="\"Services\": {"

for i in ${SERVICES[*]}
        do
                if ps ax | grep -v grep | grep ${i} > /dev/null ; then
                        JSON=$(eval echo -n $JSON "\"$i\"" : "\"running\"",)
                else
                        JSON=$(eval echo -n $JSON "\"$i\"" : "\"not running\"",)
                fi

        done
echo $JSON
```

Une idée ?

Merci

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 6:42 UTC](https://www.debian-fr.org/t/ajouter-des-dans-le-texte-dune-variable/59862/2 "2016-02-21T18:42:59Z")

</div>

[quote=“_seb_”]`if ps ax | grep -v grep | grep ${i} > /dev/null ; then
        JSON=$(eval echo -n $JSON "\"$i\"" : "\"running\"",)
else
        JSON=$(eval echo -n $JSON "\"$i\"" : "\"not running\"",)
fi
`[/quote]

C’est le eval qui fout le souk. D’ailleurs tu te compliques bien la vie à lancer un sous-shell et à en capturer le résultat, quand tu pourrais simplement faire :

```auto

```

(pareil pour “not running”)

Et même remarque que pour ton post précédent (wget/curl) : pense à mettre tes variables entre guillemets pour ne pas avoir de surprises. Par défaut, tu devrais utiliser des guillemets partout. Il est très rare de vouloir spécifiquement le comportement “sans guillemets”.

```auto

```

---

<div class="post-metadata">

**Author:** ![lroy](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/l/0ea827/32.png) [@lroy](https://www.debian-fr.org/u/lroy)\
**Post date:** [Février 21, 2016, 6:42 UTC](https://www.debian-fr.org/t/ajouter-des-dans-le-texte-dune-variable/59862/3 "2016-02-21T18:42:59Z")

</div>

Salut,

supprime les eval + echo inutiles et ça marchera mieux :

```auto
if ps ax | grep ${i} | grep -v grep > /dev/null ; then
  JSON="$JSON \"$i\": \"running\","
else
  JSON="$JSON \"$i\": \"not running\","
fi
```

par ailleurs ton grep -v grep n’était pas au bon endroit.  
tu pourrais également remplacer toute la ligne ps/grep par pidof, qui est nettement plus simple.

---

<div class="post-metadata">

**Author:** ![\_seb](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/_/90db22/32.png) [@\_seb](https://www.debian-fr.org/u/_seb)\
**Post date:** [Février 21, 2016, 6:42 UTC](https://www.debian-fr.org/t/ajouter-des-dans-le-texte-dune-variable/59862/4 "2016-02-21T18:42:59Z")

</div>

Bonjour,

Merci pour les remarques, je vais essayer ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

@syam

[quote]Et même remarque que pour ton post précédent (wget/curl) : pense à mettre tes variables entre guillemets pour ne pas avoir de surprises. Par défaut, tu devrais utiliser des guillemets partout. Il est très rare de vouloir spécifiquement le comportement «&nbsp;sans guillemets&nbsp;».  
[/quote]  
Oui… Je vais regarder plus en détail !
