如何在 tcsh 中打印整个数组

如何在 tcsh 中打印整个数组

我想在 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脚本顶部以查看解释了哪些行以及失败的位置。

相关内容