If 语句取决于传递的命令行参数是啥? [复制]

Posted

技术标签:

【中文标题】If 语句取决于传递的命令行参数是啥? [复制]【英文标题】:If Statement dependent on what command line arugment is passed? [duplicate]If 语句取决于传递的命令行参数是什么? [复制] 【发布时间】:2016-08-19 03:18:07 【问题描述】:

我的spring-boot 应用程序可以从command line 运行,arguments 作为参数传递。

我想设置我的main method,这样如果用户将“a”作为参数传递:任务 A 就会运行。如果他们将“b”作为参数传递,则运行任务 B。

我目前正在使用:

if(args.toString().contains("a"))
//run task A

有没有更好的方法来做到这一点/上面的实现是否正确?

完整的 Runner 类:

@Component
public class MyRunner implements CommandLineRunner 

    //other code

    @Override
    @Transactional
    public void run(String... args) throws Exception 

        if(args.toString().contains("a"))
            //run task A
        

        if(args.toString().contains("b"))
            //run task B
        

    


【问题讨论】:

我会检查 ***.com/questions/367706/… 以获得更好的方法来解析传入的参数。因为你这样做的方式会有很多误报。例如。如果用户将“篮子”作为参数传递怎么办... 看到这个Java Command line arguments issue。这是重复的。 【参考方案1】:

args.toString 不是你想要的,它会返回一个数组的 toString,类似于:[Ljava.lang.String;@15db9742

这更有可能是您想要的:

for(String arg : args) 
    if(arg.equals("a"))  // or .contains
        // run task A
    

【讨论】:

请注意,使用增强版您不会跳过 any 参数。我也不清楚你为什么要费心跳过第一个。 我很困惑,我认为是 c++,第一个参数是完整的命令

以上是关于If 语句取决于传递的命令行参数是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数从 gradle exec 任务传递到命令行

if [ $# -ne 1 ];then 是啥意思?

命令行参数“时间节点 app.js”中的“时间”是啥意思? [复制]

我如何处理 java 命令行参数? [复制]

将命令行参数和文本文件传递给程序

在 Linux 中启动 GDB 时如何传递命令行参数? [复制]