【发布时间】:2015-09-16 02:46:25
【问题描述】:
我正在关注这篇文章:
http://blog.dotsmart.net/2011/01/27/executing-cygwin-bash-scripts-on-windows/
我需要执行一个带有参数的批处理文件并将这个参数传递给一个 bash 脚本。参数是一个带空格的长文件名,类似于 FILE WITH SPACES.xlsx。
在 Windows 中:
c> program.cmd "FILE WITH SPACES.xlsx" # Windows 添加引号以完成文件名。
批处理脚本必须将文件名“FILE WITH SPACES.xlsx”传递给 .sh 脚本,如下所示:
# program.sh "FILE WITH SPACES.xlsx"
这是问题所在,文件传递时不带引号:
# program.sh FILE WITH SPACES.xlsx
脚本 program.sh 有:
#!/bin/sh
anyprogram "$1"
引号未通过,程序 anyprogram 未找到文件 FILE WITH SPACES.xlsx。
我尝试用 \ 转义 " 但不起作用:
#!/bin/sh
anyprogram "\"$1"\"
还有:
#!/bin/sh
anyprogram '"$1"'
没有一个看起来可行,有什么建议吗?
【问题讨论】:
-
嗨。感谢您的回答。参数不在批处理文件中,这些参数是动态的。
-
在你的 .sh 脚本中你可以尝试
in=\"$*\"然后echo $in。 -
您能否在问题中包含批处理文件中正在调用
.sh文件的行? -
将
$i替换为$*或(当调用正确时)$1。 -
@MCND 我使用了相同的博文代码:blog.dotsmart.net/2011/01/27/…
标签: windows bash shell batch-file cygwin