【问题标题】:Bash pairwise array expansionBash 成对数组扩展
【发布时间】:2015-02-25 08:32:50
【问题描述】:

我有两个相同长度的数组,如下所示:

arr1[1]=2
arr1[2]=5

arr2[1]=x
arr2[2]=y

我正在尝试创建一个类似“2 x 5 y”的字符串。

既然数组的长度可以是一个变量,有没有什么方法可以在不使用循环和字符串连接的情况下做到这一点(比如参数扩展之类的)?

【问题讨论】:

  • 即使数组长度不同,您也可以使用循环
  • 这就是我的意思。我可以使用循环。但我想知道是否有任何其他技巧,如扩展以避免循环。很抱歉造成误解。

标签: arrays bash shell unix scripting


【解决方案1】:

您可以将paste进程替换一起使用:

arr1[1]=2
arr1[2]=5

arr2[1]=x
arr2[2]=y

s=$(paste <(printf "%s\n" "${arr1[@]}") <(printf "%s\n" "${arr2[@]}") |
    tr '[[:space:]]' ' ')
echo "$s"
2 x 5 y

【讨论】:

  • 完美!谢谢。一个简单的问题,tr,你要删除多余的空间吗?因为即使没有tr,它似乎也能工作。
  • 是的,我只是用tr 删除多余的空格(空格/制表符/换行符)等。你也可以跳过它。
  • 知道了。再次感谢。
猜你喜欢
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多