【发布时间】:2014-12-04 19:41:26
【问题描述】:
我正在尝试为我们的团队创建一个小的便利脚本。不幸的是,由于历史原因,我们的整个构建环境都基于tcsh。在以下脚本中,BUILD_MATRIX 的每个元素都是以: 分隔的对。我需要分离出这对的每一部分进行处理,但由于某种原因,阵列出现故障。
#!/bin/tcsh
set BUILD_MATRIX = ( "makefile.make:make --jobs --makefile=makefile.make" \
"Makefile:make --jobs --makefile=Makefile" \
"build.xml:ant" )
foreach pair ( ${BUILD_MATRIX} )
echo "pair: ${pair}"
end
给予
pair: makefile.make:make
pair: --jobs
pair: --makefile=makefile.make
pair: Makefile:make
pair: --jobs
pair: --makefile=Makefile
pair: build.xml:ant
如您所见,数组是按空格分割的——完全合理,但不是我们想要的。如何获得pair=makefile.make:make --jobs --makefile=makefile.make?
【问题讨论】:
-
@EtanReisner 没有看到这个问题,但感谢您的链接。我不认为这是完全重复的——这是两个不同的问题(尽管具有相似的基本原则),所以有两个不同的目标和两个不同的答案。我将尝试将那里给出的答案再次调整到此应用程序。
-
那里的答案也专门涵盖了
foreach的情况。 -
@EtanReisner 哎呀——我的错。我使用大括号语法:
${array}:qnot 工作。我会将其添加为评论,并将我的答案添加为另一种选择。这应该作为一个骗局关闭。谢谢:)
标签: arrays shell dictionary tcsh