ksh:使用sed和place-in变量将unix路径转换为windows路径



在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传递变量会得到正确的数字,这就是我想要的。

最新更新