2014-01-20 77 views
1
$ echo $billreminder 
D:\juno_workspace_x64\9.0.4_app\moneycenter\src\webapp\jsp\billreminder 

billreminder="${$billreminder/'D:'/ '\\cygdrive\\d' }" 

(这个返回上CYG双赢控制台窗口BAD替换操作)字符串替换操作

我想替换 'd:\' 与 '/ cygdrive/d' 在上面的字符串billreminder

回答

1

你可以,如果你愿意,你字符串替换,但使用Cygwin,您还可以使用命令cygpath
此命令转换成Windows风格的cygwin的风格为路径供给路径参数,你可以用它如下:

b=$(cygpath $b) 
+0

+1这是在CYGWIN环境中工作的正确方式,另一个ans我们只是玩弄(包括接受的),它不能识别windows路径'(\)'和Unix路径'(/)'的区别。 – BMW

0

你可以这样来做:

b='D:\juno_workspace_x64\9.0.4_app\moneycenter\src\webapp\jsp\billreminder' 
b=\\cygdrive\\d\\${b#D:\\} 
echo $b 
+0

我想结果分配给一个变量,'回声/ cygdrive/d/$ {b#D:\\}''在这里不起作用 – shadow0wolf

+0

它确实:b = \\ cygdrive \\ d \\ $ {b#D:\\}我会编辑 –

+0

它的工作原理 – shadow0wolf

1

您可以使用此替代:

s='D:\juno_workspace_x64\9.0.4_app\moneycenter\src\webapp\jsp\billreminder' 
echo "${s/D:\\//cygdrive/d\\}" 
/cygdrive/d\juno_workspace_x64\9.0.4_app\moneycenter\src\webapp\jsp\billreminder 
2

说:

billreminder="${billreminder/D:/\\cygdrive\\d}" 
+0

这是有效的,当billreminder和/ D:/之间留有空间时,出现了坏的错误错误,而且在它没有引用字符串之前我不知道它是否可以工作,替换字符串(有问题)应该用双引号/ – shadow0wolf

1

只需删除第二$标志:

~/> echo ${billreminder/'D:'/ '\\cygdrive\\d'} 
\\cygdrive\\d\juno_workspace_x64\9.0.4_app\moneycenter\src\webapp\jsp\billreminder