如何在Windows批处理文件或Linux shell脚本中传递超过10个参数

6
我需要将超过10个参数传递给一个批处理文件(shell脚本),但是在第9个参数之后它将无法工作(它将从开头开始)。
代码示例:
 echo Hello! This a sample batch file.
    echo %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16
    pause



>mybatchdotbat a b c d e f g h i j  k l m n o p

"有人能提供这个问题的解决方案吗?"

我怀疑问题在于%10被读为%1 0。在Unix shell中,您可以使用${10}来引用第十个参数,或者使用shift删除第一个参数并将所有后续参数递减1(在循环中非常有用)。 - fzzfzzfzz
2个回答

3

基本上,%10 被解释为 %10

要解决这个问题,在批处理文件或 shell 脚本中,您可以将第一个参数保存在变量中,然后使用 shift 将所有剩余的参数减 1。当您调用 shift 时,%1(在 shell 脚本中是 $1)现在已经不存在了,旧的 %2 变成了 %1,旧的 %3 变成了 %2 等等。有关更多详细信息,请参见此答案

在 shell 脚本中,您还可以使用 ${10} 引用第十个参数。


2

您可以通过%*获取所有参数,并使用for循环解析它们:

for %%i in (%*) do echo %%i

注意:您的参数可能不包含某些字符(“标准定界符”),例如,;,除非您将它们用引号引起来。
mybatch.bat first second "this is the third" "four, not five" five 6 7 8 9 ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接