ksh: преобразовать путь Unix в путь Windows с помощью sed и поместить в переменную - PullRequest
1 голос
/ 08 марта 2012

Запустите это на KornShell (ksh):

echo ${MYVAR} | sed 's/\//\\/g'

Это прекрасно работает, если MYVAR // myserver / myshare Но делает то же самое и пытается поместить его в переменную, и это не с помощью sed:новая строка или конец файла найдены в шаблоне

UNCVAR=`echo ${MYVAR} | sed 's/\//\\/g'`

Как правильно преобразовать этот путь из косых черт стиля UNIX в косые черты стиля Windows?

Важные примеры данных:

//QFLELSAMPLE/reports

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Еще одна причина отказаться от использования обратных кавычек (если только вы не планируете использовать оболочку Bourne в Solaris / HP / et.al.). Использование обратных кавычек не рекомендуется согласно «Новому языку программирования Kornshell», опубликованному в 1995 году!1002 *

Обратите внимание, что я использую $( cmd ) версию подстановки команд.

Надеюсь, это поможет.

0 голосов
/ 09 марта 2012

Полное решение: используйте $ () вместо `` и удваивайте обратную косую черту, чтобы убрать их из эха.

MYVAR="//QFLELSAMPLE/reports"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\\\/g')
echo "$UNCVAR"

Странно, однако, что если вы затем экспортируете UNCVAR и просматриваете его через set, оно имеет значение:

\\\\\\\\QFLELITE38\\\\reports

Который, кажется, имеет двойную ожидаемую обратную косую черту.Но передача переменной через echo дает правильное число, которое я и ищу.

...