首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘'Translate’.sh to .bat

‘'Translate’.sh to .bat
EN

Stack Overflow用户
提问于 2010-09-28 20:47:29
回答 4查看 3.6K关注 0票数 2

嗨!

我想使用这个简单的script.sh:

代码语言:javascript
复制
#!/bin/sh
filename=$1
echo $filename | sed 's/\([A-Z]\)/ \1/g';

在script.bat中,但是我的电脑不是Windows,所以我不能测试它。这个是正确的吗??

代码语言:javascript
复制
prueba.bat 

filename=%1  
echo %filename% | sed 's/\([A-Z]\)/ \1/g';

提前感谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-28 20:51:10

不完全是:

代码语言:javascript
复制
@echo %1| sed "s/\([A-Z]\)/ \1/g"

但你必须确保你有一个可用的sed (CygWinGnuWin32对于这些工具来说是很好的-如果你只需要特定的东西,我更喜欢GnuWin32,CygWin往往能给你很多东西)。

您还必须小心使用像filename这样的环境变量。虽然UNIX将在当前shell的上下文中创建它们(因此其效果将是有限的),但cmd.exe脚本将“泄漏”它们(因此直接使用%1)。

票数 4
EN

Stack Overflow用户

发布于 2010-09-28 20:51:10

在cmd.exe中,%1%没有任何意义,请使用%1,或者更好的做法是%~1,它删除了可能的引号。

此外,对于sed的文字表达式,请使用双引号。单引号将被传递给sed。

代码语言:javascript
复制
 set filename=%~1
 echo.%filename%| sed "s/\([A-Z\)/ \1/g"

在bash中,在$表达式周围使用"

票数 3
EN

Stack Overflow用户

发布于 2010-09-28 20:52:40

声明变量时需要使用set,最好使用@echo off

代码语言:javascript
复制
@echo off
set filename=%1
echo %filename% | sed 's/\([A-Z]\)/ \1/g';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3812821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档