Scripting ';翻译'。快进,快进
嗨Scripting ';翻译'。快进,快进,scripting,batch-file,Scripting,Batch File,嗨 我想使用这个简单的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'; 提前感谢在cmd.exe中,%1%没有任何意义,请使用%1或更好的方法,%1删除可能的引号 另
我想使用这个简单的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';
提前感谢在cmd.exe中,
%1%
没有任何意义,请使用%1
或更好的方法,%1
删除可能的引号
另外,对于sed的文本表达式使用双引号。单引号将传递给sed
set filename=%~1
echo.%filename%| sed "s/\([A-Z\)/ \1/g"
在bash中,在
$
表达式周围使用“
。在cmd.exe中,%1%
并不意味着什么,使用%1
或者更好的是,%1
删除可能的引号
此外,对sed的文本表达式使用双引号。单引号将传递给sed
set filename=%~1
echo.%filename%| sed "s/\([A-Z\)/ \1/g"
在bash中,在$
表达式周围使用“
。不完全是:
@echo %1| sed "s/\([A-Z]\)/ \1/g"
但是你必须确保你有一个可用的sed
(或者对于这些工具来说是非常优秀的-如果你只需要特定的东西,我更喜欢GnuWin32,CygWin会给你很多)
您还必须小心使用环境变量,如filename
。虽然UNIX将在当前shell的上下文中创建它们(因此其效果将受到限制),cmd.exe
脚本将“泄漏”它们(因此直接使用%1
)。不完全是:
@echo %1| sed "s/\([A-Z]\)/ \1/g"
但是你必须确保你有一个可用的sed
(或者对于这些工具来说是非常优秀的-如果你只需要特定的东西,我更喜欢GnuWin32,CygWin会给你很多)
您还必须小心使用环境变量,如
filename
。虽然UNIX将在当前shell的上下文中创建它们(因此其效果将受到限制),cmd.exe
脚本将“泄漏”它们(因此直接使用%1
)。您需要使用set
来声明变量,最好使用@echo off
@echo off
set filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';
您需要使用
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 cmd.exe不喜欢单引号
echo %filename% | sed "s/\([A-Z]\)/ \1/g";
为什么你不干脆等到你有了一台Windows机器再测试它?@ghostdog74这条评论与任何事情有什么关系?为什么你不干脆等到你有了一台Windows机器再测试它?@ghostdog74这条评论与任何事情实际上有什么关系,这对CygWin
sed
没有影响,但我不确定GnuWin32,所以我会更改它。实际上,这对CygWinsed
没有影响,但我不确定GnuWin32,所以我会更改它。