Bash 带双引号的Shell字符串-RTC命令

Bash 带双引号的Shell字符串-RTC命令,bash,shell,rtc,Bash,Shell,Rtc,我正在尝试运行RTC4.x命令将组件添加到工作区。组件列表的名称中有空格,因此它们需要用引号括起来。我将此列表存储在一个简单的字符串变量中: COMPONENTS=“\”TestComp\“\”通用组件\” 当我只是回显组件时,它会正确显示,但当我在scm命令中使用它时,引号会发生奇怪的事情。我在Jenkins中运行它,这样我可以得到一些额外的输出,但是当我在命令行上运行它时也会发生同样的事情,所以这不是Jenkins的问题 从控制台日志: + COMPONENTS='"TestComp" "C

我正在尝试运行RTC4.x命令将组件添加到工作区。组件列表的名称中有空格,因此它们需要用引号括起来。我将此列表存储在一个简单的字符串变量中:

COMPONENTS=“\”TestComp\“\”通用组件\”

当我只是回显组件时,它会正确显示,但当我在scm命令中使用它时,引号会发生奇怪的事情。我在Jenkins中运行它,这样我可以得到一些额外的输出,但是当我在命令行上运行它时也会发生同样的事情,所以这不是Jenkins的问题

从控制台日志:

+ COMPONENTS='"TestComp" "Common Component"'
+ echo '"TestComp"' '"Common' 'Component"'
"TestComp" "Common Component"
该命令正在尝试运行以下命令:

+scm工作区添加组件测试工作区-s测试流“TestComp”“Common”“Component”

产生:

Problem running 'workspace add-components':
Unmatched component ""Common".

通常,您需要使用数组来存储本身可能包含空格的项:

components=("TestComp" "Common Component")
scm workspace add-components TEST_Workspace -s Test_Stream "${components[@]}"

引用用
@
索引的数组扩展生成一个单词序列,数组中每个元素一个单词,而不是一个单词。

好主意,但我也尝试了数组路径。这会产生类似的结果,具体取决于我如何使用引号。例如:
components=(“TestComp”“Common Component”)
导致
com.ibm.team.scm.Common.componentnotinworkspace异常:组件“TestComp”不在工作区中
错误。此
components=(“TestComp”“Common Component”“)
生成
不匹配的组件“'Common Component”“。
如果手动指定组件,而不尝试将其存储在变量中,您将如何调用
scm
?您显示的第一个错误(对于我声称应该可以工作的代码)看起来更像是安装程序的问题,而不是
bash
命令的问题。@JimG是否在数组引用周围使用了双引号(如
“${components[@]}”
)?@Gordondavison是的,我在数组引用周围使用了双引号@chepner如果我手动调用该命令,它将是:
scm-workspace-addcomponents-TEST\u-workspace-s TEST\u Stream TestComp“Common Component”
,或者它也可以是
scm-workspace-addcomponents-TEST\u-s TEST\u-Stream“TestComp”“Common Component”
,这样行吗?我的代码和那个代码应该没有区别。