# Bash - intégration de caractères spéciaux dans une variable

**URL:** <https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349>\
**Category:** Programmation\
**Created:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349 "2016-02-28T19:30:28Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/1 "2016-02-28T19:30:28Z")

</div>

Bonjour,

Je me heurte à un souci de script écrit en bash; D’ailleurs je finis par me demander si c’est possible…

voilà, je voudrais mettre des caractères du style :

```auto
&é"'(-è_çà)è-('"_$ùù$!n,;:
```

dans une variable, puis l’exploiter.

Sauf que … ça veut pas 🙂

```auto
#!/bin/sh
mavar=K}+*chE*&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{'>ZrK
echo $mavar
```

et j’ai comme retour :

> [@](#):
>
> :~/tmp/TESTARD$ bash test.sh  
> test.sh: ligne 2: erreur de syntaxe près du symbole inattendu « ) »  
> test.sh: ligne 2: `mavar=K}+*chE*&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{‹&nbsp;\>ZrK&nbsp;›

Est-ce qu’il y a une solution svp ? ou bien faut taper direct dans du C ?

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/2 "2016-02-28T19:30:29Z")

</div>

Apparemment, il attend une parenthèse ouvrante.  
Tu devrais poster ça dans “programmation”.

EDIT :  
Attention aussi à l’absence de guillemets ’ '.

---

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/3 "2016-02-28T19:30:29Z")

</div>

je voulais dire aussi qu’il y a des métacaractères…

heu par contre pour déplacer le sujet, je sais pas faire (d’ailleurs, puis-je le faire ?)

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/4 "2016-02-28T19:30:29Z")

</div>

`#!/bin/bash
mavar='K}+*chE*&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{'"'"'>ZrK'
echo $mavar`Donnera : [mono]K}+_chE_&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{’\>ZrK[/mono]

=======  
Pour que certains caractères ne soient pas interprétés par [mono]bash[/mono], il faut les entourer du caractère [mono]’[/mono]  
Mais ce caractère fait aussi partie de la chaîne à afficher, et pour qu’il ne soit pas lui même interprété, il faut l’éntourer de caractères [mono]"[/mono]

Ce qui nous fait trois chaînes de caractères accolées :

- En Vert celles qui sont encadrées par des caractères [mono]’[/mono]
- En Rouge le seul caractère [mono]’[/mono] de la chaîne qui est encadré par des caractères [mono]"[/mono]

[mono]‘K}+_chE_&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{’"’"’\>ZrK’[/mono]

=======

`michel@debg53sw:~/mesScripts$ cat testscr
#!/bin/bash
mavar='K}+*chE*&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{'"'"'>ZrK'
echo $mavar
michel@debg53sw:~/mesScripts$ chmod +x testscr
michel@debg53sw:~/mesScripts$ ./testscr
K}+*chE*&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{'>ZrK
michel@debg53sw:~/mesScripts$ `

---

<div class="post-metadata">

**Author:** ![anon96191775](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/71c47a/32.png) [@anon96191775](https://www.debian-fr.org/u/anon96191775)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/5 "2016-02-28T19:30:29Z")

</div>

> [@guiguitarux](#):
>
> heu par contre pour déplacer le sujet, je sais pas faire (d’ailleurs, puis-je le faire ?)

C’est fait 😉

Seuls les modérateurs peuvent déplacer un sujet, le plus simple quand tu souhaites déplacer un de tes messages/sujets est de nous faire signe via le bouton «&nbsp;Rapporter le message&nbsp;» ![](https://www.debian-fr.org/styles/debianfr2/imageset/fr/icon_post_report.gif) présent en bas à droite de chaque message.

---

<div class="post-metadata">

**Author:** ![cedric058](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/d2c977/32.png) [@cedric058](https://www.debian-fr.org/u/cedric058)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/6 "2016-02-28T19:30:29Z")

</div>

“Mais” sous bash (dans le terminal):

A="&é"’(-è\_çà)è-(’"_$ùù$!n,;:" [mono]fonctionne[/mono]  
A=’&é"’(-è\_çà)è-(’"_$ùù$!n,;:’ [mono]ne fonctionne pas[/mono]

A=‘K}+_chE_&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{’\>ZrK’ [mono][strike]fonctionne[/strike][/mono]  
A=“K}+_chE_&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{’\>ZrK” [mono]ne fonctionne pas[/mono]

[mono]Edit[/mono]: Modifié suite à une remarque de MicP

---

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/7 "2016-02-28T19:30:30Z")

</div>

Ok merci bp pour ces précisions.

Je sens que je vais galérer car le contenu de ma variable va changer tout le temps (imprévisible donc) et il faudra que je puisse l’exploiter… :-/

---

<div class="post-metadata">

**Author:** ![anon29980398](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/f4b2a3/32.png) [@anon29980398](https://www.debian-fr.org/u/anon29980398)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/8 "2016-02-28T19:30:31Z")

</div>

Si tu veux que ton script soit exécuté par [mono]bash[/mono], il faut utiliser le shebang [mono]#!/bin/bash[/mono]

=======

[quote]…  
A=‹&nbsp;K}+_chE_&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{&nbsp;›\>ZrK’ fonctionne  
…[/quote] Pas chez moi :[code]michel@debg53sw:~/mesScripts$ A=‹&nbsp;K}+_chE_&pM+:@.)w5ODDSBz0j&7VC`CLVR!t^,qY7k@%kv@i(1t|`swi{&nbsp;›\>ZrK’ ; echo $A

> ^C  
> michel@debg53sw: [/code]  
> =======  
> Transmet nous les chaînes que tu veux obtenir, et les essais que tu as fait,  
> sinon ça va être impossible de comprendre ce que tu veux obtenir.

Merci.

---

<div class="post-metadata">

**Author:** ![cedric058](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/d2c977/32.png) [@cedric058](https://www.debian-fr.org/u/cedric058)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/9 "2016-02-28T19:30:31Z")

</div>

[quote=«&nbsp;Micp&nbsp;»]Pas chez moi[/quote]  
Oui en effet, tu as raison, je n’avais pas vu que tu avais modifié la chaîne initiale. Et j’ai fait un copier de ta chaîne pour le test =\> confusion 😒

[http://abs.traduc.org/abs-fr/ch05.html](http://abs.traduc.org/abs-fr/ch05.html)

Comment est affectée cette variable guiguitarux ?

---

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/10 "2016-02-28T19:30:32Z")

</div>

bonjour,

alors voilà mon script bash [testarg.sh](http://testarg.sh) auquel il faut mettre deux variables en argument :

`#!/bin/bash
var1=$1
var2=$2
echo "la var1 sera $1 et la var2 sera : $2"
echo "la var1 sera $1 et la var2 est du coup : `echo $2 | sed -e "s/~/tilde/g"`"
`

exemple qui marche :

[quote]$ bash [testarg.sh](http://testarg.sh) azmoerjg ok~  
la var1 sera azmoerjg et la var2 sera : ok~  
la var1 sera azmoerjg et la var2 est du coup : oktilde  
[/quote]

exemple qui ne marche pas :

[quote]$ bash [testarg.sh](http://testarg.sh) azmoerjg g~/x/1Fq0Ti\*:{Dv~rv#R7/gxDFvhgaTh\>yrRuBhSQh:)tV5z49=mq4oI}deN=AX  
bash: erreur de syntaxe près du symbole inattendu « ) »  
[/quote]

---

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/11 "2016-02-28T19:30:34Z")

</div>

Je viens de réaliser que ça déconne dès le traitement du premier echo (pas le dexième)

---

<div class="post-metadata">

**Author:** ![cedric058](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/d2c977/32.png) [@cedric058](https://www.debian-fr.org/u/cedric058)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/12 "2016-02-28T19:30:34Z")

</div>

Non, ça ne fonctionne pas au niveau de la reconnaissance des arguments.

Avec un script test “vide” comme ci-dessous:

```auto

```

`$ ./test azmoerjg g~/x/1Fq0Ti*:{Dv~rv#R7/gxDFvhgaTh>yrRuBhSQh:)tV5z49=mq4oI}deN=AX
bash: erreur de syntaxe près du symbole inattendu « ) »
`

Avec ces arguments, ça semble fonctionner comme ça:

`$ ./test azmoerjg 'g~/x/1Fq0Ti*:{Dv~rv#R7/gxDFvhgaTh>yrRuBhSQh:)tV5z49=mq4oI}deN=AX'
`

---

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/13 "2016-02-28T19:30:36Z")

</div>

alors effectivement ça fonctionne si le symbole ’ n’apparaît pas dans la variable N°=2 ;

sauf que la valeur de cet argument je ne la contrôle pas hélas… et ce symbole ’ peut apparaître. Je suis bien ennuyé 🙂

---

<div class="post-metadata">

**Author:** ![cedric058](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/c/d2c977/32.png) [@cedric058](https://www.debian-fr.org/u/cedric058)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/14 "2016-02-28T19:30:36Z")

</div>

> [@guiguitarux](#):
>
> sauf que la valeur de cet argument je ne la contrôle pas hélas

Dans l’exemple que tu nous montres, c’est toi qui rentre les arguments…

Bizarrement comme ça, on est moins embêté:

Je créé un fichier «&nbsp;texte&nbsp;» avec la ligne suivante dedans:  
g~/x/1Fq’0Ti\*:{Dv~rv#R7/gxDFvhgaTh\>yrRuBhSQh:)tV5z49=mq4oI}deN=AX

```auto
$ A=$(cat texte)
$ echo $A
g~/x/1Fq'0Ti*:{Dv~rv#R7/gxDFvhgaTh>yrRuBhSQh:)tV5z49=mq4oI}deN=AX
$ echo $A | sed 's/~/tilde/g'
gtilde/x/1Fq'0Ti*:{Dvtilderv#R7/gxDFvhgaTh>yrRuBhSQh:)tV5z49=mq4oI}deN=AX
```

---

<div class="post-metadata">

**Author:** ![guiguitarux](https://www.debian-fr.org/user_avatar/www.debian-fr.org/guiguitarux/32/10039_2.png) [@guiguitarux](https://www.debian-fr.org/u/guiguitarux)\
**Post date:** [Février 28, 2016, 7:30 UTC](https://www.debian-fr.org/t/bash-integration-de-caracteres-speciaux-dans-une-variable/68349/15 "2016-02-28T19:30:38Z")

</div>

> [@](#):
>
> Dans l’exemple que tu nous montres, c’est toi qui rentre les arguments…

he oui je sais… mais c’est pour éviter d’étaler tout le reste.. et je voulais concentrer toute la problématique que…

tu viens de résoudre cedric058 ![:041](https://www.debian-fr.org/uploads/default/original/1X/bfe857c9119752799c3eac55ca37a50312c51282.gif "applaudit")

bravo parce qu’en plus ça marche même avec les ’ du coup… alors merci beaucoup !
