Echo avec dollar et quotes

Résolu
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. Modérateur
    Re-
    $  echo "a\$a'a"
    a$a'a
    
    ;-))
    1. 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 ?
      1. Modérateur
        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

    2. Et as tu une idee pour afficher la phrase suivante ?
      C:\Yahoo!'s folder\~$temp.txt

      Merci d'avance
      Santiago

      1. Modérateur
        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

        1. 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 '
          1. Modérateur
            [trash]$ echo C:\Yahoo\!\'s folder\~$temp.txt
            C:Yahoo!'s folder~.txt
            [trash]$ 
            ;-))
            1. Modérateur
              ah, ok

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

              1. Modérateur
                Oups ;-((

                Merci, je m'étais tellement focalisé sur le "!" et le " ' " que j'en ai oublié le "\" :-[
              2. Modérateur
                @jipicyMoi j'ai fait le contraire ;-)
              3. Modérateur
                @lami20jDe 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 ;-((
            2. 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