从数组中提取元素(bash)

时间:2012-12-08 06:17:43

标签: linux arrays bash

我无法从数组中提取特定元素。基本上我使用命令的输出并将其放入数组中。我想打印出一个元素。

到目前为止,这是我的代码。

one=`w | tr -s " " | cut -d" " -f1 | tail -n+3`
two=`w | tr -s " " | cut -d" " -f5 | tail -n+3`
echo ${one[@]:3:2}

这只会打印出名称中第三个字母开头的两个字母。我想从第三个名字开始打印出两个名字。

2 个答案:

答案 0 :(得分:0)

如果要将它们用作数组,则必须创建onetwo作为数组。

one=($(w | tr -s " " | cut -d" " -f1 | tail -n+3))

此外,bash数组从0开始编制索引。因此,要从third名称开始打印两个名称,您将使用

echo ${one[@]:2:2}

答案 1 :(得分:0)

有两个问题:

  • 数组的初始化应如下:

    one=($(w | tr -s " " | cut -d" " -f1 | tail -n+3))

  • 然后打印你应该做的元素:

    echo ${one[1]} ${one[2]}