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

时间:2014-04-25 19:08:39

标签: bash shell rtc

我正在尝试运行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".

1 个答案:

答案 0 :(得分:2)

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

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

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