Azure Batch 服务:通过命令行将参数传递到 Linux/Ubuntu 上的应用程序包

Azure Batch Service: Passing Arguments via Command Line into Application Package on Linux/Ubuntu

鉴于以下 C#/.NET 控制台应用程序 运行ning 在我的 Azure Batch Pool/Task 上:

class Program
{
    static async Task Main(string[] args)
    {
        try
        {
            Console.WriteLine(args[0]);
            Console.WriteLine(args[1]);
        }
        catch
        {
            Console.WriteLine($"Could not parse arguments");
        }
    }
}

在 Linux/Ubuntu VM 中向我的任务添加命令行时如何传递参数。我尝试了以下但没有成功:

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0/Program -args 'arg1' 'arg2'

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0/Program -args 'arg1', 'arg2'

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0/Program 'arg1' 'arg2'

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0/Program 'arg1', 'arg2'

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0/Program -i 'arg1' 'arg2'

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0/Program -i 'arg1', 'arg2'

我可以 运行 应用程序,但没有传入参数,我只能得到 “无法解析参数” 输出...

在此抛出所有可能的变体之后(并查看 this example),看起来您必须以某种方式将包名称的字符串值与环境变量的 args 连接起来,以确保参数传递给命令。

这是我最终做到的

/bin/sh -c $AZ_BATCH_APP_PACKAGE_Program_1_0"/Program 'arg1' 'arg2'"

希望这对正在寻找它的人有所帮助!