使用 JAVA 多行输出作为 shell 脚本中的变量
Posted
技术标签:
【中文标题】使用 JAVA 多行输出作为 shell 脚本中的变量【英文标题】:Use JAVA multi-line outputs as variables within shell script 【发布时间】: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 脚本中的变量
【问题讨论】:
【参考方案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 <(java -cp ojdbc6.jar:. javaClassFile args)
之类的内容可能适用于创建多个变量。
【讨论】:
我已经修改了我的 java 代码来为值添加引号,但是 source 命令不适用于声明变量。而while循环在意外标记`附近抛出语法错误 @balachandar 确定您使用的是 bash? 是的。我正在使用 bash 环境 @balachandarsource <(your program)
必须在 Bash 中工作——根据 Wikipedia,语法背后的功能至少从 1994 年就已经存在。确保不要在两者之间添加任何额外的空格字符“小于”符号和左括号。以上是关于使用 JAVA 多行输出作为 shell 脚本中的变量的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 shell 脚本中的多行命令中包含内联注释? [复制]