我正在尝试为我们的团队创建一个小小的便利脚本。不幸的是,由于历史原因,我们的整个构建环境基于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
?
答案 0 :(得分:1)
使用链接的副本,我找到了一个完整的答案:
foreach pair ( $BUILD_MATRIX:q )
set candidate = `echo $pair | sed 's/\([^:]*\):\(.*\)/\1/'`
set command = `echo $pair | sed 's/\([^:]*\):\(.*\)/\2/'`
echo "pair: ${pair}"
echo "candidate: ${candidate}"
echo "command: ${command}"
end