Script pour mysql , problème de syntaxe

Hello :slightly_smiling:
Je code un petit script pour envoyer 3 ou 4 commandes les plus courantes,

oui mai bon :

un simple mots de passe qui peux contenir tout ce qui passe (a moins de filtrer les entrées…)

echo $'(safadsf*+$öä£ü!;:_-.,`?=)(/&ç"+§°{}[]´~´¢|¬§°#@¦%+%*&"$$@¦ç/*%(&/GDJDV\\''^'/)(=?`?`pè$àl-,BNVNHJ)'
-bash: erreur de syntaxe près du symbole inattendu « ) »

sa commance bien … :angry-banghead:

oui mai c’ est pas fini:

function test(){
echo "Debug" $1 $2 ${$3}
mysql -D $db -u $user -p$pass_postfix -e "update comptes set password=ENCRYPT($3) where email=$2@$Domaine;"
}

on retrouve donc le problème 2 fois:
$2@$Domaine
$3
je donne ma langue aux chat, il y a un moyen d’y parvenir ?

je pense que le script/bash est incapable(ou c’est moi:oops: ) de gérer la string, doit-je me tourner vairs autre chose comme le c++ ?

merci d’avance

salut,

pourquoi utilises-tu ces formes particulières : $’’ et ${$3} ?
la première sert à développer des "caractères protégés par contre-oblique remplacés comme indiqué par le standard ANSI C"
la seconde voudrait appeler un paramètre positionnel du script en utilisant un paramètre positionnel de la fonction.

Bonjour,
pour le simple oubli de ma par , mai le problème ne change pas
Merci de m’avoir lu

[quote=“panthere”]un simple mots de passe qui peux contenir tout ce qui passe (a moins de filtrer les entrées…)

sa commance bien … :angry-banghead: [/quote]

A voir:

[quote=“panthere”]function test(){ echo "Debug" $1 $2 ${$3} mysql -D $db -u $user -p$pass_postfix -e "update comptes set password=ENCRYPT($3) where email=$2@$Domaine;" }
on retrouve donc le problème 2 fois:
$2@$Domaine
$3
je donne ma langue aux chat, il y a un moyen d’y parvenir ?

je pense que le script/bash est incapable(ou c’est moi:oops: ) de gérer la string, doit-je me tourner vairs autre chose comme le c++ ?[/quote]
A voir si ceci fonctionne:

Pour ton filtre

Fait le petit a petit, ajout caractère par caractère s’il le faut. Sinon si tu regarde les parenthèses il en manque une fermante.

Nous donner des bouts de ton scrits n’aide pas a la compréhension, essaye de nous donner un exemple que l’on puisse exécuter et reproduire le bug sinon.
Dernier truc met toi en set -x pour débugger ton script.

[quote=“Mimoza”]Pour ton filtre

echo $'(safadsf*+$öä£ü!;:_-.,`?=)(/&ç"+§°{}[]´~´¢|¬§°#@¦%+%*&"$$@¦ç/*%(&/GDJDV\\''^'/)(=?`?`pè$àl-,BNVNHJ)'

Fait le petit a petit, ajout caractère par caractère s’il le faut. Sinon si tu regarde les parenthèses il en manque une fermante.

Nous donner des bouts de ton scrits n’aide pas a la compréhension, essaye de nous donner un exemple que l’on puisse exécuter et reproduire le bug sinon.
Dernier truc met toi en set -x pour débugger ton script.[/quote]

Le scripte est celui cité bon dans une boucle qui lis un fichier longin/pass. mai le souci principal c’est que le mots de passe lui peux contenir n’importe qu’elle caractères et tout viens de là. vouloir les gerés deviens un casse tête et peux lisible le nombre diffère, la longueur aussi etc.

J’ai contourner le problème en interdisant les caractères du shell, donc sa tourne

Merci pour vos réponse. :023