我想在 tcsh 中打印整个数组,因为然后我想将它通过管道传输到 uniq,有没有办法在 tcsh 中做到这一点。
我有set array
并正在打印它:
echo "$array"
但最终出现错误:单词太长,它适用于较小的数组,
有一些简单的方法可以做到吗?
答案1
您必须有一个非常旧的 tcsh 版本,字太长2006 年 tcsh 版本 6.14.03 中删除了该限制。
echo "$array"
会将数组元素的串联传递为echo
一个元素,但如果其中任何元素包含换行符,则会失败。
echo "$array:q"
传递所有元素的串联会更正确。
传递数组的所有元素(空元素除外;尽管那将是在下一个版本中修复) 作为 的单独参数echo
,即:
echo $array:q
但如果echo "$array"
你失败了字太长,echo
在那个非常旧的版本中也可能会失败echo: 太多的争论。。
答案2
在 tcsh 中,您可以按如下方式使用数组。
定义数组
set myarray = ( element1 element2 element3 element4 etc )
输出整个数组
printf '%s\n' "$array[-]"
打印元素 1 至 3
printf '%s\n' "$array[1-3]"
注意:在 Bash 中,数组的第一个元素从0
(零)开始。
还要添加到set verbose
脚本顶部以查看解释了哪些行以及失败的位置。