java - 在 shell 脚本中使用 JAVA 多行输出作为变量

标签 java bash shell variables scripting

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

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

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

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

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

最佳答案

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

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 <(java -cp ojdbc6.jar:. javaClassFile args)可能适用于创建多个变量。

关于java - 在 shell 脚本中使用 JAVA 多行输出作为变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370672/

相关文章:

Java 编译错误无效的 END header (错误的中央目录偏移量)

arrays - Bash 多个命令行参数

bash - LIBTOOL 尝试编译 GMP 时失败

bash - SQL*Loader-522 : lfiopn failed for file

php - 找不到命令 : PHP exec()

java - Spring WebServiceTemplate 的 marshalSendAndReceive 方法在发送 Request 时将 SOAP header 发送为 null

java - hibernate 标准生成器 : How to filter by a nullable entity attribute?

java - 使用Java JLayer的背景音乐在Eclipse和可运行的jar中播放,但在客户端下载并运行它时不播放

java - 为什么 command/usr/libexec/java_home 不起作用?

linux - 使用 awk 命令格式化日志