如何在Windows下将参数传递给.sh脚本?

时间:2015-08-20 00:47:54

标签: windows bash shell command-line parameter-passing

我正在尝试在Windows下执行.sh脚本。我安装了Git,它允许我执行.sh文件。但是,我似乎无法传递任何参数而没有使用“sh”前缀执行:

我的.sh文件:

echo "Test" $1

如果我执行它:

> sh test.sh 123

我得到了

  

测试123

但是,如果我只是将其作为

执行
> test.sh 123

我得到了

  

测试

我知道可以使用参数执行带有参数的.sh脚本而不用“sh”作为前缀,因为通过某些配置组合,我能够以某种方式在旧计算机上执行此操作。有关如何实现这一点的任何猜测?

1 个答案:

答案 0 :(得分:0)

正如@HarryJohnston在评论中解释的那样,解决这个问题的第一步是找出assocftype关联。 assoc很可能会返回.sh=sh_auto_file,而在我的情况下,ftype会返回sh_auto_file="C:\Program Files\Git\git-bash.exe" --no-cd "%L" %*。问题的一部分类似于发生的事件in this issue - Windows没有将参数传递给.sh文件。要解决此问题,sh_auto_file关联需要以/ "%1" %*作为其中的一部分结束。但是,问题的另一部分是(至少在我的情况下在Windows 10上),注册表中可能有多个地方有错误的记录。最后,我不得不手动将注册表中的2-3个条目更改为"C:\Program Files (x86)\Git\bin\sh.exe" "%1" %*,以使其最终有效。要查找这些地点,请搜索.shsh_auto_file并相应地替换。

奖励:使.sh文件执行而无需编写" .sh"最后,在环境变量中将.SH添加到pathext