我正在尝试运行RTC 4.x命令以将组件添加到工作区。组件列表在名称中包含空格,因此它们需要用引号括起来。我将此列表存储在一个简单的字符串变量中:
COMPONENTS="\"TestComp\" \"Common Component\""
当我刚刚回显出COMPONENTS时,它会正确显示,但是当我在scm命令中使用它时,引号会发生奇怪的事情。我在Jenkins中运行它,所以我可以获得一些额外的输出,但是当我在命令行上运行它时会发生同样的事情,所以这不是Jenkins问题。
从控制台日志:
+ COMPONENTS='"TestComp" "Common Component"'
+ echo '"TestComp"' '"Common' 'Component"'
"TestComp" "Common Component"
该命令正在尝试运行以下命令:
+ scm workspace add-components TEST_Workspace -s Test_Stream '"TestComp"' '"Common' 'Component"'
产生:
Problem running 'workspace add-components':
Unmatched component ""Common".
答案 0 :(得分:2)
通常,您需要使用数组来存储本身可能包含空格的项目:
components=("TestComp" "Common Component")
scm workspace add-components TEST_Workspace -s Test_Stream "${components[@]}"
引用以@
索引的数组扩展会产生一个单词序列,每个元素一个单词,而不是一个单词。