嗨!
我想用這個簡單的script.sh:'翻譯'.sh到.bat
#!/bin/sh
filename=$1
echo $filename | sed 's/\([A-Z]\)/ \1/g';
在script.bat,但我的電腦是沒有窗戶,所以我不能測試它。這一個將是正確的?
prueba.bat
filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';
在此先感謝
嗨!
我想用這個簡單的script.sh:'翻譯'.sh到.bat
#!/bin/sh
filename=$1
echo $filename | sed 's/\([A-Z]\)/ \1/g';
在script.bat,但我的電腦是沒有窗戶,所以我不能測試它。這一個將是正確的?
prueba.bat
filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';
在此先感謝
不太:
@echo %1| sed "s/\([A-Z]\)/ \1/g"
但是,你必須確保你有一個sed
可用(CygWin或GnuWin32非常適合這些工具 - 我喜歡的GnuWin32如果你只需要具體的事情不同,Cygwin往往給你一個lot)。
你還必須小心使用像filename
這樣的環境變量。雖然UNIX將在當前shell的環境下創建它們(因此它的效果將受到限制),但cmd.exe
腳本會「泄漏」它們(因此直接使用%1
)。
需要雙引號相關。 – ghostdog74 2010-09-28 12:55:10
實際上,這對CygWin'sed'沒有什麼影響,但我不確定GnuWin32,所以我會改變它。 – paxdiablo 2010-09-28 12:59:27
輸入cmd.exe,%1%
並不意味着什麼,用%1
或者更好,%~1
從而消除可能引號代替。
另外,對於sed的文字表達式使用雙引號。單引號將傳遞給sed。
set filename=%~1
echo.%filename%| sed "s/\([A-Z\)/ \1/g"
在bash,使用"
在你$
表達式。
您需要使用set
來聲明一個變量,最好使用@echo off
@echo off
set filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';
Windows CMD.EXE的恨單引號
echo %filename% | sed "s/\([A-Z]\)/ \1/g";
你爲什麼不乾脆等到你有一個Windows機器然後測試它? – ghostdog74 2010-09-28 12:52:42
@ ghostdog74該評論與任何 – DSF 2013-11-30 18:21:47