在TCSH中访问带空格的数组元素

时间:2014-12-04 19:41:27

标签: arrays shell dictionary tcsh

我正在尝试为我们的团队创建一个小小的便利脚本。不幸的是,由于历史原因,我们的整个构建环境基于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

1 个答案:

答案 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