#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
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
Hors ligne
#4 Le 19/06/2010, à 12:07
- gerarmentor
Re : [Résolu] Problèmes avec les guillemets et sqlite3
Salut
. 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
$ 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
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 )
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