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
    
    ;-))
    2
    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 ?
      0
      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

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

      Merci d'avance
      Santiago

      0
      1. Le probleme vient cette fois du point d'exclamation
        0
        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

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

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

                0
                1. Modérateur
                  Oups ;-((

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