2014-01-20 75 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