[ksh] Recuperer une variable avec un \ dedans

Recuperer une variable avec un \ dedans [ksh] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-11-2007 à 10:25:28    

Bonjour,
J'aurai besoin dans un script ksh d'aller lire des chemins windows (oui je sais c'est mal :D ), donc ces chemins contiennent des \ et ca me pose probleme:
quand je recupere la variable tout va bien, par contre des que je veux l'afficher ou l'ecrire dans un fichier ca me donne n'importe quoi si apres l'backslash j'ai un c ou un b ou un a ou autre caractere qui fait qu'avec l'backslash ca me fait un caractere de controle particulier.
Donc ma question, comment pourrais-je faire pour traiter de telles variables:
par exemple si je fais toto="\new" y a t-il un moyen de recuperer '\new' au lieu d'un retour a la ligne et puis 'ew', c'est a dire que le retour ne soit pas interprete (sans aller jusqu'a faire un toto="\\\\new", c'est un fichier qui est utilise par d'autres applis)? (j'ai rien trouve du cote de typeset, et je sais pas trop vers ou chercher, c'est la premiere fois que j'ai ce genre de truc a faire)
Merci,
Max

Reply

Marsh Posté le 26-11-2007 à 10:25:28   

Reply

Marsh Posté le 26-11-2007 à 11:07:10    

non. Si t'écris \n c'est \n.
Il n'y aucun moyen sinon de deviner \n vaut un coup vraiment \n et l'autre \\n

Reply

Marsh Posté le 26-11-2007 à 11:30:36    

C'est ce que je pense aussi, mais je tente au cas ou, j'ai regarde du cote de typeset voir si on pouvait pas mettre un attribut particulier sur la variable pour qu'il ne l'interprete pas, mais j'ai rien trouve...
pourtant il y a bien des applis capables de lire des fichiers avec des \ dedans, comment ils font (caractere par caractere peut-etre?)?

Reply

Marsh Posté le 26-11-2007 à 11:36:00    

nan mais c'est pas possible
\n c'est interprété quand tu le saisis et ça donne le caractère new line. Les applications elles n'interprètent rien : elle vois '\n' c'est '\n' et pas '\' + 'n'

Reply

Marsh Posté le 25-12-2007 à 19:15:02    

Si si, c'est tout à fait possible avec ksh: il suffit de désactiver l'interprétation shell: toto='\new$var'
$toto vaudra exactement la chaîne de caractères "\new$var" (avec les \n et $var non interprétés)

Reply

Marsh Posté le 26-12-2007 à 14:05:27    

Oki merci, j'ai procede autrement, mais des que je rentre de conges je teste le chose...
++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed