【问题标题】:Use JAVA multi-line outputs as variables within shell script使用 JAVA 多行输出作为 shell 脚本中的变量
【发布时间】:2020-08-05 19:13:55
【问题描述】:

我的 JAVA 代码输出如下所示。

    Name="John"
    Age="23"
    Gender="Male"
    Phone="+123 456 789"
    ..
    ..

我想将上面的 java 代码输出用作 shell 脚本中的变量,而无需编写任何中间文件。我正在尝试在 Myscript.sh 中使用以下命令获取变量

JAVA_OUTPUT=`java -cp ojdbc6.jar:. javaClassFile args`
echo $JAVA_OUTPUT

但我无法将 java 输出设置为 shell 脚本中的变量

【问题讨论】:

    标签: java bash shell variables scripting


    【解决方案1】:

    您可以使用关联数组来存储所有键/值对:

    declare -A vars
    while IFS='=' read -r key value; do
        vars[$key]=$value;
    done < <(java -cp ojdbc6.jar:. javaClassFile args)
    echo "${vars[Name]} is ${vars[Age]}"
    # Etc.
    

    或者,如果您更改您的 java 程序以在值周围添加引号,并带有空格(如电话号码一),则 source &lt;(java -cp ojdbc6.jar:. javaClassFile args) 之类的内容可能适用于创建多个变量。

    【讨论】:

    • 我已经修改了我的 java 代码来为值添加引号,但是 source 命令不适用于声明变量。而while循环在意外标记`附近抛出语法错误
    • @balachandar 确定您使用的是 bash?
    • 是的。我正在使用 bash 环境
    • @balachandar source &lt;(your program) 必须在 Bash 中工作——根据 Wikipedia,语法背后的功能至少从 1994 年就已经存在。确保不要在两者之间添加任何额外的空格字符“小于”符号和左括号。
    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 2019-08-30
    • 1970-01-01
    • 2015-06-26
    • 2023-03-28
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多