Echo avec dollar et quotes

Résolu/Fermé
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 27 mai 2008 à 18:53
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 29 mai 2008 à 08:49
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 ?

9 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 mai 2008 à 18:56
Re-
$  echo "a\$a'a"
a$a'a
;-))
2
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
27 mai 2008 à 19:19
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
27 mai 2008 à 19:37
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
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
27 mai 2008 à 19:42
Et as tu une idee pour afficher la phrase suivante ?
C:\Yahoo!'s folder\~$temp.txt

Merci d'avance
Santiago

0
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
27 mai 2008 à 19:46
Le probleme vient cette fois du point d'exclamation
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
27 mai 2008 à 19:50
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
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
27 mai 2008 à 19:58
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 mai 2008 à 20:01
[trash]$ echo C:\Yahoo\!\'s folder\~$temp.txt
C:Yahoo!'s folder~.txt
[trash]$ 
;-))
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
27 mai 2008 à 20:09
ah, ok

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

0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 mai 2008 à 20:14
Oups ;-((

Merci, je m'étais tellement focalisé sur le "!" et le " ' " que j'en ai oublié le "\" :-[
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
27 mai 2008 à 20:16
Moi j'ai fait le contraire ;-)
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019
27 mai 2008 à 20:18
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
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 209
29 mai 2008 à 08:49
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