`
chenhua_1984
  • 浏览: 1251182 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

关于从shell给Java传参数的问题

    博客分类:
  • java
阅读更多

通过shell教本给java传参数,总是被空格断开(我的目的是接受带空格的参数
)

[code]#!/usr/bin/ksh
#
PARAMS="";
while getopts dek:f:t:vh OPTION
do
    case $OPTION in
        d | e | v | h)
        PARAMS=$PARAMS" -$OPTION"
        ;;
        k)
        PARAMS=$PARAMS" -k$OPTARG";
        ;;
        f | t)
        PARAMS=$PARAMS" "\""-"$OPTION$OPTARG\";
        ;;
        \?)echo "Illegal Paremters"
        exit 1;;
    esac
done
echo $PARAMS
#$JAVA_HOME/bin/java MyTEST $PARAMS
 
MyTEST{
public static void main(String args[])
{
    ...
    for (int i = 0; i < args.length; i++) {
            if (args[i].startsWith("-d"))
                dec = true;
            else if (args[i].startsWith("-e"))
                enc = true;
            else if (args[i].startsWith("-f"))
                file_name = args[i].substring(2, args[i].length());
            else if (args[i].startsWith("-k"))
                key = args[i].substring(2, args[i].length());
            else if (args[i].startsWith("-t"))
                text = args[i].substring(2, args[i].length());
            else if (args[i].startsWith("-a"))
                algorithm = args[i].substring(2, args[i].length());
            else if (args[i].startsWith("-v"))
                verbose = true;
            else if (args[i].startsWith("-h"))
                usage();
            else
                System.out.println("Unknow args:" + args[i]);
        }
      ...
  }
}[/code]

 运行shell脚本 给参数 "abc 00", java接受到两个参数 "abc和00"

怎么回事?

关于从shell给Java传参数的问题

abc 00有空格,参数是以空格间隔的


关于从shell给Java传参数的问题

其实你应该发在shell版,因为不是Java的问题:)
把双引号一起赋值给PARAMS和写成"$PARAMS"是不等价的。
不知道下边的这个是不是符合你的要求。

[code]
#!/usr/bin/ksh

PARAMS="";
while getopts dek:f:t:vh OPTION
do
    case $OPTION in
        d | e | v | h)
        PARAMS=$PARAMS" -$OPTION"
        ;;
        k)
        PARAMS=$PARAMS" -k$OPTARG";
        ;;
        f | t)
        PARAMS=$PARAMS\ -$OPTION$OPTARG;
        ;;
        \?)
        echo "Illegal Paremters"
        exit 1;;
    esac
done
echo $PARAMS
$JAVA_HOME/bin/java MyTEST "$PARAMS"
[/code]

 关于从shell给Java传参数的问题

按照你的做法,所有命令行参数将作为一个参数传递给java啦!

除非我改一改java中的参数处理方式。

还有更好的方式吗?

看来误会你的意思了。
[code]
#!/usr/bin/ksh

PARAMS="";
while getopts dek:f:t:vh OPTION
do
    case $OPTION in
        d | e | v | h)
        PARAMS=$PARAMS" -$OPTION"
        ;;
        k)
        PARAMS=$PARAMS" -k$OPTARG";
        ;;
        f | t)
        PARAMS=$PARAMS\ \"-$OPTION$OPTARG\";
        ;;
        \?)
        echo "Illegal Paremters"
        exit 1;;
    esac
done
echo $PARAMS
eval $JAVA_HOME/bin/java MyTEST $PARAMS
[/code]
这样可以了吧?
 
分享到:
评论

相关推荐

    java调用shell(包含有参数的调用)

    本文将详细解释Java如何调用Shell脚本,包括如何编写Shell脚本和在Java中如何传递参数。 首先,Shell脚本可以被看作是一系列Linux命令的集合,用于自动化执行多个命令。类似于Windows环境中的批处理文件,Shell脚本...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    本问题聚焦于如何通过Java调用shell脚本,向DataX传递参数,特别是包含特殊字符的where条件。在实际操作中,这可能会涉及到字符串转义、参数安全传递以及shell命令的构建等多个技术点。 首先,我们需要理解DataX的...

    java调用shell向DataX传参,带where条件,特殊字符

    在上述代码中,`command`字符串包含了Shell脚本的路径以及传递给脚本的参数。注意,如果参数包含特殊字符(如空格、分号、引号等),需要正确地进行转义或者用引号括起来,以确保Shell能正确解析。 然后,关于DataX...

    shell 脚本调用Java类

    在Shell脚本中,你可以通过`java`命令的`-cp`或`-classpath`选项指定更复杂的类路径,通过`java`命令后的参数传递给Java程序。此外,可以使用`if`、`while`等控制结构在Shell脚本中实现条件判断和循环,以适应各种...

    java调用shell脚本

    在java代码中调用shell脚本并传入参数,此java文件是单个测试案例,使用main方法执行java文件

    shell,bat脚本运行java程序

    下面将详细介绍如何使用shell脚本(适用于Unix/Linux系统)和bat脚本(适用于Windows系统)来运行Java程序。 **shell脚本运行Java程序** 在Unix/Linux环境中,我们可以创建一个.sh文件作为shell脚本来执行Java程序...

    shell java

    在IT行业中,尤其是在系统管理和自动化任务执行领域,`shell` 和 `Java` 是两种非常重要的工具。`Shell` 是Unix/Linux系统中的命令解释器,它提供了用户与操作系统内核交互的接口,允许用户通过编写脚本来执行一系列...

    Shell执行/调用Java/Jar程序例子

    要从Shell脚本中执行Java JAR文件,可以使用以下命令: ```bash java -jar path_to_your_jar_file.jar ``` 其中`path_to_your_jar_file.jar`是JAR文件的实际路径。 4. **传递参数** 如果JAR文件需要命令行...

    shell脚本启动Java程序测试工程

    # 指定Java虚拟机参数,如内存设置 JAVA_OPTS="-Xms256m -Xmx512m" # 定义Java类路径 CLASSPATH=$JAR_FILE # 使用java命令启动程序 java $JAVA_OPTS -cp $CLASSPATH $MAIN_CLASS ``` 在这个脚本中,`#!/bin/bash`...

    Shell run Java

    其中,`&lt;主类全名&gt;`是指带有包名的主类名称,而`[参数]`则是传递给Java Application的命令行参数。 例如,根据给定的内容中的示例,可以通过以下命令来运行名为`jp.co.sony.impacts.epi.batch.BatchMain$*`的Java ...

    java 远程调用Shell脚本客户端包

    Java 远程调用Shell脚本客户端包是一个实用的工具,专为开发者设计,使得在Java应用程序中执行远程Shell命令变得简单而高效。这个包的主要功能是通过Java代码发起对远程服务器上的Shell脚本的调用,从而实现跨平台的...

    java spring-boot shell 启动器

    Java Spring-Boot Shell 启动器是一个实用工具,它提供了通过Shell脚本来管理Spring-Boot应用的便捷方式。这个启动器允许用户启动、停止、重启和查看应用日志,而无需手动使用`kill`命令来结束进程。在IT环境中,...

    java调试参数

    通过合理设置Java调试参数,开发者可以在开发、测试甚至生产环境中对Java应用程序进行远程调试,这对于定位问题、理解程序运行时的行为至关重要。本文将围绕“Java调试参数”这一主题展开,详细介绍与之相关的各项...

    java调用shell

    在IT领域,特别是软件开发与系统管理中,Java与Shell脚本之间的交互是常见的需求,尤其是在自动化运维、批处理任务以及跨平台应用中。本文将深入探讨如何在Java程序中调用Shell脚本,理解其背后的原理,并提供一系列...

    shell启动java程序(jar)的脚本

    shell启动jar程序的脚本,可以根据传入的参数"start"、"stop"、"restart"启动当前目录下的jar程序。

    文摘标题:JAVA带参数调用KETTLE远程服务执行任务

    本资源主要内容包括(资源有保证,都是干货,一看就会): ...2.JAVA传参调用KETTLE远程服务执行任务实现过程及注意事项说明。 3.附件包括:配套说明文档、代码包、KETLLE任务测试文件及数据库脚本。

    利用app_process实现免root调用shell_Java_下载.zip

    在Android系统中,由于安全性的考虑,普通应用通常无法直接执行shell命令,这给了一些开发者在特定场景下进行系统级操作的限制。然而,通过巧妙地利用`app_process`,可以实现在不获取root权限的情况下调用shell命令...

    java在win下启动bat和在linux下启动shell脚本

    在实际应用中,这种工具类可能还会有其他高级特性,例如添加超时机制、返回脚本的执行结果、支持参数传递给脚本等。通过这种方式,开发者可以在Java程序中灵活地调用操作系统级别的功能,实现更复杂的自动化流程。

    shell脚本运行java程序jar的方法

    在本篇文章中,我们将详细介绍shell脚本运行java程序jar的方法,并解决在使用crontab定时任务时可能遇到的问题。 1. shell脚本的基本结构 shell脚本是Unix/Linux系统下的一个脚本语言,使用shell脚本可以自动执行...

Global site tag (gtag.js) - Google Analytics