2012-03-08 98 views
1

运行sed和地方这种转化UNIX路径到Windows路径:如果MYVAR是KSH:在KornShell(KSH)与可变

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

它工作正常// MYSERVER/myshare的 但这样做相同的,试图把它变成一个变量,它失败 的sed:换行符或最终文件的模式发现

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

如何正确地从UNIX风格转换这个路径斜杠的windows风格的斜线?

重要样本数据:

//QFLELSAMPLE/reports 

回答

1

另一个原因停止使用反引号反引号是根据“新Kornshell弃用(除非您打算使用的是Bourne shell在Solaris/HP/et.al。)编程语言“,1995年出版!

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

请注意,我正在使用$(cmd)版本的命令替换。

我希望这会有所帮助。

+0

在我的系统上(在Windows服务器上运行mks工具包)我得到\ myserver \ myshare。它正在吃第一个反斜杠。但是我使用我正在使用的输入修改了这个问题,导致\ r被解释为一个ctrl M,它完全抛弃了输出。所以我失去了第一个反斜杠和第三个反斜杠。似乎我应该只需要避开那些反斜杠。如果我加倍他们我得到正确的输出。那谢谢啦。 – 2012-03-09 16:10:35

+0

哇,已经忘记了mkstoolkit(尽管我十多年前就喜欢它!)只是为了感兴趣的缘故,请尝试我的解决方案,但使用'echo $“$ UNCVAR”。感谢您的积分! – shellter 2012-03-09 16:33:52

0

完整的解决方案:使用$()而不是``并加上反斜杠以避免它们回显。

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

奇怪的是,如果你再出口UNCVAR,并通过集查看它的值是:

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

似乎有双重预期的反斜杠。 但通过回声传递变量给出了正确的数字,这是我所追求的。