在KornShell(ksh):上运行
echo ${MYVAR} | sed 's///\/g'
如果MYVAR是//myserver/myshare,则工作正常但做同样的事情并试图将其放入变量中,结果失败了sed:在模式中找到换行符或文件末尾
UNCVAR=`echo ${MYVAR} | sed 's///\/g'`
如何正确地将此路径从UNIX样式的斜线转换为windows样式的斜线?
重要样本数据:
//QFLELSAMPLE/reports
停止使用backtick的另一个原因(除非您计划在Solaris/HP/等上使用Bourne Shell)根据1995年发布的"the New Kornshell programming Language",Backtick已被弃用!
MYVAR="//myserver/myshare"
UNCVAR=$(echo ${MYVAR} | sed 's///\/g')
echo "$UNCVAR"
\myservermyshare
请注意,我使用的是命令替换的$( cmd )
版本。
我希望这能有所帮助。
完整解决方案:使用$()而不是``,并将反斜杠加倍以从echo中转义。
MYVAR="//QFLELSAMPLE/reports"
UNCVAR=$(echo ${MYVAR} | sed 's///\\/g')
echo "$UNCVAR"
奇怪的是,如果你随后导出UNCVAR并通过设置查看它,它的值为:
\\\\QFLELITE38\\reports
它似乎有两个预期的反斜杠。但通过echo传递变量会得到正确的数字,这就是我想要的。