在KornShell(ksh)上运行:
echo ${MYVAR} | sed 's/\//\\/g'
如果MYVAR是// myserver / myshare,它可以正常工作 但是做同样的事情并试图将它放入一个变量中它失败了 sed:在模式中找到的换行符或文件结尾
UNCVAR=`echo ${MYVAR} | sed 's/\//\\/g'`
如何将此路径从UNIX样式斜杠正确转换为Windows样式斜杠?
重要的样本数据:
//QFLELSAMPLE/reports
答案 0 :(得分:1)
停止使用反引号的另一个原因(除非您打算在Solaris / HP / et.al上使用Bourne Shell。)反引号根据1995年发布的“新Kornshell编程语言”而被弃用!
MYVAR="//myserver/myshare"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\/g')
echo "$UNCVAR"
\\myserver\myshare
请注意,我正在使用$( cmd )
版本的命令替换。
我希望这会有所帮助。
答案 1 :(得分:0)
完整的解决方案:使用$()代替``并加倍反斜杠以使它们不受回声的影响。
MYVAR="//QFLELSAMPLE/reports"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\\\/g')
echo "$UNCVAR"
虽然如果然后导出UNCVAR并通过set查看它,它会有值:
,这很奇怪\\\\\\\\QFLELITE38\\\\reports
这似乎是预期反斜杠的两倍。 但是通过echo传递变量给出了正确的数字,这就是我所追求的。