Exécutez ceci sur un KornShell (ksh):
echo ${MYVAR} | sed 's/\//\\/g'
Cela fonctionne très bien si MYVAR est // myserver / myshare Mais en faisant de même et en essayant de le placer dans une variable et cela échoue avec sed: newline ou end of file found in pattern
UNCVAR=`echo ${MYVAR} | sed 's/\//\\/g'`
Comment convertir correctement ce chemin depuis les barres obliques de style UNIX vers les barres de style Windows?
Données d’échantillon importantes:
//QFLELSAMPLE/reports
Encore une autre raison de ne plus utiliser les backticks (sauf si vous prévoyez d’utiliser le shell Bourne sur Solaris / HP / et.al).
MYVAR="//myserver/myshare" UNCVAR=$(echo ${MYVAR} | sed 's/\//\\/g') echo "$UNCVAR" \\myserver\myshare
Notez que j’utilise la version $( cmd )
de la substitution de commande.
J’espère que ça aide.
Solution complète: Utilisez $ () au lieu de “ et doublez les barres obliques inverses pour leur échapper.
MYVAR="//QFLELSAMPLE/reports" UNCVAR=$(echo ${MYVAR} | sed 's/\//\\\\/g') echo "$UNCVAR"
Bizarrement, si vous exportez alors UNCVAR et que vous le visualisez via set, il a la valeur suivante:
\\\\\\\\QFLELITE38\\\\reports
Ce qui semble avoir le double des antislashs attendus. Mais passer la variable par écho donne le nombre correct qui est ce que je suis après.