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

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 :

dans une variable, puis l’exploiter.

Sauf que … ça veut pas :slightly_smiling:

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

et j’ai comme retour :

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

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

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

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 ?)

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

C’est fait :wink:

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 “Rapporter le message” présent en bas à droite de chaque message.

“Mais” sous bash (dans le terminal):

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

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

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

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… :-/

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

=======

[quote]…
A=‘K}+chE&pM+:@.)w5ODDSBz0j&7VCCLVR!t^,qY7k@%kv@i(1t|swi{’>ZrK’ fonctionne
…[/quote] Pas chez moi :[code]michel@debg53sw:~/mesScripts$ A=‘K}+chE&pM+:@.)w5ODDSBz0j&7VCCLVR!t^,qY7k@%kv@i(1t|swi{’>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.

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 :unamused:

http://abs.traduc.org/abs-fr/ch05.html

Comment est affectée cette variable guiguitarux ?

bonjour,

alors voilà mon script bash 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 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 azmoerjg g~/x/1Fq0Ti*:{Dv~rv#R7/gxDFvhgaTh>yrRuBhSQh:)tV5z49=mq4oI}deN=AX
bash: erreur de syntaxe près du symbole inattendu « ) »
[/quote]

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

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

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

$ ./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'

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é :slightly_smiling:

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 “texte” avec la ligne suivante dedans:
g~/x/1Fq0Ti*:{Dv~rv#R7/gxDFvhgaTh>yrRuBhSQh:)tV5z49=mq4oI}deN=AX

$ 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

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

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