Echo avec dollar et quotes

Résolu
santiago69 Messages postés 485 Statut Membre -  
santiago69 Messages postés 485 Statut Membre -
salut a tous,
je voudrais lancer une commande echo avec des dollars et des quotes mais ca ne marche ni avec des guillemets, ni avec des quotes :
$ echo "a$a'a"     #aa'a
$ echo 'a$a'a'     #ca bug
$ echo 'a$a\'a'    #ca bug aussi

une idee ?

--

Il y a 10 types de personnes dans le monde
Ceux qui comprennent le binaire et les autres.
Configuration: Windows XP
Firefox 2.0.0.14

9 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-
    $  echo "a\$a'a"
    a$a'a
    
    ;-))
    2
  2. santiago69 Messages postés 485 Statut Membre 209
     
    ah ben ouais, chu un peu con sur ce coup la ;o)
    merci beaucoup !
    cette technique me protege t elle de tous les caracteres speciaux ?
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Salut,

      sauf le backslash ;-))

      en ce cas il te faut la séquence \\ pour afficher \ et encore un \ avant le $
      lami20j@debian:~$ echo "a\\\$a'a"
      a\$a'a
      sinon tu auras
      lami20j@debian:~$ echo "a\\$a'a"
      a\a'a

      0
  3. santiago69 Messages postés 485 Statut Membre 209
     
    Et as tu une idee pour afficher la phrase suivante ?
    C:\Yahoo!'s folder\~$temp.txt

    Merci d'avance
    Santiago

    0
  4. santiago69 Messages postés 485 Statut Membre 209
     
    Le probleme vient cette fois du point d'exclamation
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    On ne va pas s'amuser pour mettre un backslash devant toutes tes phrases ;-))
    Que veux-tu faire exactement?
    lami20j@debian:~/trash$ echo "C:\\Yahoo\!'s folder\\~\$temp.txt"
    C:\Yahoo\!'s folder\~$temp.txt

    0
  7. santiago69 Messages postés 485 Statut Membre 209
     
    comme tu le vois,
    si on n'echappe pas le point d'exclamation, cela genere une erreur,
    si on l'echappe, le \ s'affiche avec.
    je ne vois pas comment faire.

    ce que je cherche a faire, c'est ecrire des commandes sur des fichiers (rm, cp, mv).
    lesquels fichiers sont crees par windows et contiennent des $, des ! et des '
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    [trash]$ echo C:\Yahoo\!\'s folder\~$temp.txt
    C:Yahoo!'s folder~.txt
    [trash]$ 
    ;-))
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    ah, ok

    lami20j@debian:~/trash$ echo C:\\Yahoo\!\'s folder\\~\$temp.txt
    C:\Yahoo!'s folder\~$temp.txt

    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Oups ;-((

      Merci, je m'étais tellement focalisé sur le "!" et le " ' " que j'en ai oublié le "\" :-[
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Moi j'ai fait le contraire ;-)
        0
      2. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        De toutes façons cette méthode a ses limites ;-((

        Y'a des espaces dans les chemins, et dès qu'il s'agira de 'rm' ou 'cp' ça passera plus ;-((
        0
  10. santiago69 Messages postés 485 Statut Membre 209
     
    Salut,
    J'ai reussi apres moulte tatonement a creer le fichier suivant :
    santiago$ ls
    a !"#$%&'()*+,-.09:;<=>?@AZ[\]^_`az{|}~

    Il commence par un a (pour des questions de simplicite) qui est suivi de tous les caracteres du jeu ASCII de 32 a 126 sauf slash (/). Je n'ai par ailleurs pas utilise tous les chiffres, majuscules et minuscules mais simplement insere 09, AZ et az a leur place dans l'ordre du jeu ASCII.
    Ensuite, pour savoir la liste des caracteres a echaper, j'ai tout simplement tape touch a puis [tab] et voila le resultat :
    santiago$ touch a\ \!\"#\$%\&\'\(\)\*+\,-.09\:\;\<\=\>\?\@AZ\[\\\]\^_\`az\{\|\}~

    Les caracteres a echapper sont donc (il y a un espace au debut) :
     !"$&'()*,:;<=>?@[\]^`{|}       (Caracteres a echaper en provenance d'unix)
     !$&'(),;=@[]^`{}               (Caracteres a echaper en provenance de windows)
    #%+-.09AZ_az~                   (Caractere ne necessitant pas d'echapement)

    Tout de meme ca me semblait tellement plus simple de pouvoir utiliser des quotes que j'ai fait le test suivant : J'ai tape touch 'a puis [tab]. Bingo ! Voila le resultat...
    santiago$ touch 'a !"#$%&'\''()*+,-.09:;<=>?@AZ[\]^_`az{|}~'

    Il n'y a donc plus aucun caractere a echapper. La solution devient :
    1) Remplacer tous les ' par des '\''
    2) Mettre le resultat entre ' et '

    Voila. J'espere que ces recherche vous auront aide vous aussi.
    Merci a tous pour votre participation.
    Santiago
    0