Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/06/2010, à 19:53

TheCaméléon

[Résolu] Problèmes avec les guillemets et sqlite3

Bonjour tout le monde !

Je code en ce moment un petit script bash (assez puissant soit il précisé). Il utilise sqlite3 car il doit accéder à une base de donnée. Pour ce qui est de son utilisation, aucun problème.

Par contre je bloque pour passer des chaînes de caractères. En effet elles contiennent souvent des ' et des ", et là sqlite3 bloque. Ajouter un backslash? Je sais ! Le problème c'est pour les ajouter correctement à la chaîne, qui est extraite d'un fichier. Je ne peux donc pas l'ajouter barbare à la main :S
Il faut que je passe par une fonction, mais là... impossible de faire fonctionner le tout. Pour l'instant je remplace (avec sed) tous les ' par des espaces, mais bon c'est pas top.... au contraire :S Ça permet juste de pouvoir finir le script sans trop d'emmerdes.

Merci d'avance,
TheCaméléon

PS : pour vous montrer ma bonne volonté, mes essais

 1517  echo "loflshh''lpk"
 1518  echo "loflshh''lpk" | tr "\'" "\\\'"
 1519  echo "loflshh''lpk" | tr "\'" "\'"
 1520  echo "loflshh''lpk" | tr "\'" "\\'"
 1521  echo "loflshh''lpk" | tr "\'" "\\\'"
 1522  echo "loflshh''lpk" | tr "\'" "'"
 1523  echo "loflshh''lpk" | tr "\'" "\'"
 1524  echo "loflshh''lpk" | tr "\'" "\ '"
 1525  echo "loflshh''lpk" | tr "\\'" "\\\'"
 1526  echo "loflshh''lpk" | tr "\\'" "\\\\'"
 1527  echo "loflshh''lpk" | tr "\\'" "\\\\\'"
 1528  echo "loflshh''lpk" | tr "\\'" "\\\\\\\\'"
 1529  echo "loflshh''lpk" | tr "'" "\\\\\\\\'"
 1530  echo "loflshh''lpk" | tr "\\\\\\\\'"
 1531  echo "loflshh''lpk" | tr "'" "\\\\\\\\'"
 1532  echo "loflshh''lpk" | tr "'" "\\\\\\\\\\\\\\'"
 1533  echo "loflshh''lpk" | tr "'" "\\'"
 1534  echo "loflshh''lpk" | tr "'" "\\"
 1535  echo "loflshh''lpk" | tr "'" "\\'"
 1536  echo "loflshh''lpk" | sed "s/'/\'/g"
 1537  echo "loflshh''lpk" | sed "s/'/\\'/g"
 1538  echo "loflshh''lpk" | sed "s/'/\\\'/g"
 1540  echo "loflshh''lpk" | sed "s/'/\\\'/g"
 1541  echo "loflshh''lpk" | sed "s/'/\\\\'/g"
 1542  echo "loflshh''lpk" | sed "s/'/\\\\\'/g"
 1543  echo "loflshh''lpk" | sed "s/'/\\\\\\\\'/g"
 1544  echo "loflshh''lpk" | sed "s/'/\\\\\\\'/g"
 1545  echo "loflshh''lpk" | sed "s/'/\\\\\\'/g"
 1547  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\'/g"
 1548  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\'/g"
 1549  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\\\\\\\\\\\_\'/g"
 1550  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\\\\\\\\\\\\'/g"
 1551  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\\\\\\\\\'/g"
 1552  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\\\\\'/g"
 1553  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\\\'/g"
 1554  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\\'/g"
 1555  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\'/g"
 1556  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\'/g"
 1557  echo "loflshh''lpk" | sed "s/'/\\\\\\\\\\\'/g"
 1559  printf "oju'i''o'oiu"
 1560  printf "oju'i''o'oiu\n"
 1562  echo "loflshh''lpk" | sed 's/['"'"'"]/\\&/g'
 1563  echo "loflshh''lpk" | sed 's/['"'"'"]/\\\&/g'
 1564  echo "loflshh''lpk" | sed 's/['"'"'"]/\\\/&/g'
 1565  echo "loflshh''lpk" | sed "s/\'/\\\'/g"
 1566  echo "loflshh''lpk" | sed "s/\'/\\'/g"
 1567  echo "loflshh''lpdsvk" | sed "s/\'/\\'/g"
 1568  echo "loflshh''lpdsvk" | sed "s/'/\\'/g"
 1569  echo "loflshh''lpdsvk" | sed "s/'/\\\'/g"
 1571  echo "${"kqjsdbfvkbh'bj'hb"//\'/\\\'}"
 1572  echo "loflshh''lpdsvk" | tr "\'" "\\\''
 1573  echo "loflshh''lpdsvk" | tr "\'" "\\\'"
 1574  echo "loflshh''lpdsvk" | tr "\'" "\\\\'"
 1575  echo "loflshh''lpdsvk" | tr "\'" "\\'"
 1576  echo "loflshh''lpdsvk" | tr "'" "\\'"
 1577  echo "loflshh''lpdsvk" | tr "'" "\\_'"
 1578  echo "loflshh''lpdsvk" | tr "'" "\\\'"
 1579  echo "loflshh''lpdsvk" | tr "\'" "\\\'"
 1586  echo $(uri_escapee("'kjb'kb'"))
 1589  echo "'" | uri_escape

juste qq essais tongue

Dernière modification par TheCaméléon (Le 19/06/2010, à 13:17)

Hors ligne

#2 Le 18/06/2010, à 19:57

TheCaméléon

Re : [Résolu] Problèmes avec les guillemets et sqlite3

je précise tous ces essais renvoient (pour certains) ce qu'il me faudrait \', mais sqlite, lui....s'en tape ^^

Hors ligne

#3 Le 19/06/2010, à 11:19

TheCaméléon

Re : [Résolu] Problèmes avec les guillemets et sqlite3

up big_smile

Hors ligne

#4 Le 19/06/2010, à 12:07

gerarmentor

Re : [Résolu] Problèmes avec les guillemets et sqlite3

Salut

TheCaméléon a écrit :

. Pour l'instant je remplace (avec sed) tous les ' par des espaces, mais bon c'est pas top....

Pourquoi ne pas remplacer ' par ?

Edit : après une petite recherche, j'ai trouvé la solution : il faut doubler l'apostrophe. J'ai essayé et ça marche smile

$ sqlite3 test.db "create table t (a TEXT);"
$ sqlite3 test.db "insert into t (a) values ('l''aile');"
$ sqlite3 test.db "select * from t";
l'aile

Dernière modification par gerarmentor (Le 19/06/2010, à 12:19)

Hors ligne

#5 Le 19/06/2010, à 13:11

TheCaméléon

Re : [Résolu] Problèmes avec les guillemets et sqlite3

j'essayes big_smile

Hors ligne

#6 Le 19/06/2010, à 13:15

TheCaméléon

Re : [Résolu] Problèmes avec les guillemets et sqlite3

MERCI !!!!

(ça fait du bien tongue)
Pour ça sur Google, j'avais RIEN trouvé (enfin rien qui marche)

Hors ligne

#7 Le 19/06/2010, à 13:17

TheCaméléon

Re : [Résolu] Problèmes avec les guillemets et sqlite3

ça fait plus classe que de mettre un espace ^^

Hors ligne