Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell ksh:使用sed将unix路径转换为windows路径并放入变量_Shell_Unix_Scripting_Sed_Ksh - Fatal编程技术网

Shell ksh:使用sed将unix路径转换为windows路径并放入变量

Shell ksh:使用sed将unix路径转换为windows路径并放入变量,shell,unix,scripting,sed,ksh,Shell,Unix,Scripting,Sed,Ksh,在KornShell(ksh)运行此命令: 如果MYVAR为//myserver/myshare,则工作正常 但同样的做法,并试图把它放入一个变量,它失败了 sed:在模式中找到换行符或文件结尾 UNCVAR=`echo ${MYVAR} | sed 's/\//\\/g'` 如何正确地将此路径从UNIX样式的斜杠转换为windows样式的斜杠 重要样本数据: //QFLELSAMPLE/reports 还有一个停止使用backticks的原因(除非您计划在Solaris/HP/et.al上

在KornShell(ksh)运行此命令:

如果MYVAR为//myserver/myshare,则工作正常 但同样的做法,并试图把它放入一个变量,它失败了 sed:在模式中找到换行符或文件结尾

UNCVAR=`echo ${MYVAR} | sed 's/\//\\/g'`
如何正确地将此路径从UNIX样式的斜杠转换为windows样式的斜杠

重要样本数据:

//QFLELSAMPLE/reports

还有一个停止使用backticks的原因(除非您计划在Solaris/HP/et.al上使用Bourne Shell)。根据1995年出版的《新Kornshell编程语言》,backticks已被弃用

MYVAR="//myserver/myshare"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\/g')
echo "$UNCVAR"
\\myserver\myshare
请注意,我使用的是命令替换的
$(cmd)
版本


我希望这会有所帮助。

停止使用backticks的另一个原因(除非您计划在Solaris/HP/et.al上使用Bourne Shell)。根据1995年出版的《新Kornshell编程语言》,backticks已被弃用

MYVAR="//myserver/myshare"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\/g')
echo "$UNCVAR"
\\myserver\myshare
请注意,我使用的是命令替换的
$(cmd)
版本

我希望这能有所帮助。

完整的解决方案:使用$()而不是``并将反斜杠加倍以避开echo

MYVAR="//QFLELSAMPLE/reports"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\\\/g')
echo "$UNCVAR"
奇怪的是,如果导出UNCVAR并通过set查看它,它的值为:

\\\\\\\\QFLELITE38\\\\reports
它似乎有两倍于预期的反斜杠。 但是通过echo传递变量会得到正确的数字,这正是我想要的。

完整解决方案:使用$()而不是``并将反斜杠加倍以从echo中转义

MYVAR="//QFLELSAMPLE/reports"
UNCVAR=$(echo ${MYVAR} | sed 's/\//\\\\/g')
echo "$UNCVAR"
奇怪的是,如果导出UNCVAR并通过set查看它,它的值为:

\\\\\\\\QFLELITE38\\\\reports
它似乎有两倍于预期的反斜杠。
但是通过echo传递变量会得到正确的数字,这正是我所要的。

在我的系统(运行在windows server上的mks toolkit)上,我得到了\myserver\myshare。它正在吃第一个反斜杠。但是我用我正在使用的输入修改了问题,这导致将\r解释为ctrl M,从而完全放弃输出。所以我失去了第一个反斜杠和第三个反斜杠。看来我只需要避开那些反斜杠。如果我将它们加倍,我将得到正确的输出。所以,谢谢。哇,我已经忘记了mkstoolkit(虽然我10多年前就喜欢它了!),只是出于兴趣,请尝试我的解决方案,但使用'echo$“$UNCVAR”。谢谢你的分数!在我的系统(运行在windows server上的mks toolkit)上,我得到了\myserver\myshare。它正在吃第一个反斜杠。但是我用我正在使用的输入修改了问题,这导致将\r解释为ctrl M,从而完全放弃输出。所以我失去了第一个反斜杠和第三个反斜杠。看来我只需要避开那些反斜杠。如果我将它们加倍,我将得到正确的输出。所以,谢谢。哇,我已经忘记了mkstoolkit(虽然我10多年前就喜欢它了!),只是出于兴趣,请尝试我的解决方案,但使用'echo$“$UNCVAR”。谢谢你的分数!