嗨!
我想使用这个简单的script.sh:
#!/bin/sh
filename=$1
echo $filename | sed 's/\([A-Z]\)/ \1/g';在script.bat中,但是我的电脑不是Windows,所以我不能测试它。这个是正确的吗??
prueba.bat
filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';提前感谢
发布于 2010-09-28 20:51:10
不完全是:
@echo %1| sed "s/\([A-Z]\)/ \1/g"但你必须确保你有一个可用的sed (CygWin或GnuWin32对于这些工具来说是很好的-如果你只需要特定的东西,我更喜欢GnuWin32,CygWin往往能给你很多东西)。
您还必须小心使用像filename这样的环境变量。虽然UNIX将在当前shell的上下文中创建它们(因此其效果将是有限的),但cmd.exe脚本将“泄漏”它们(因此直接使用%1)。
发布于 2010-09-28 20:51:10
在cmd.exe中,%1%没有任何意义,请使用%1,或者更好的做法是%~1,它删除了可能的引号。
此外,对于sed的文字表达式,请使用双引号。单引号将被传递给sed。
set filename=%~1
echo.%filename%| sed "s/\([A-Z\)/ \1/g"在bash中,在$表达式周围使用"。
发布于 2010-09-28 20:52:40
声明变量时需要使用set,最好使用@echo off
@echo off
set filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';https://stackoverflow.com/questions/3812821
复制相似问题