【发布时间】:2017-03-23 03:02:54
【问题描述】:
我有一个小的java程序:
公共类测试{ 公共静态无效主要(字符串[]参数){ System.out.println("A:" + System.getProperty("A")); System.out.println("B:" + System.getProperty("B")); } }它是这样工作的:
# java -DA="A B" -DB="B A" 测试 甲:乙乙 乙:乙现在让我们假设有人要像这样从 bash 执行我的程序,而我无法更改它:
# java "$PARAMS" 测试
我在 bash 变量中有 A 和 B 的值,它们都包含空格,如下所示:
#A="A B" #B="B A"如何设置 PARAMS 变量的值以使其正常工作?
我试过了:
#PARAMS="-DA=\"$A\" -DB=\"$B\"" # 回显 $PARAMS -DA="A B" -DB="B A"似乎一切都很好,$PARAMS 的值和上面的例子完全一样,但是我得到的是这样的:
# 设置-x; java "$PARAMS" 测试;设置 +x + 设置-x + java '-DA="A B" -DB="B A"' 测试 A:“A B”-DB="B A" 乙:空 + 设置 +x因此,在评估 PARAMS 变量时,它被单引号包围,因此 java 将其解释为单个变量 A = '"A B" -DB="B A"'
所以问题是如何使用 A 和 B 设置 PARAMS 的值以按预期进行评估?
谢谢
【问题讨论】: