如何从 bash 列表中获取元素?

如何从 bash 列表中获取元素?

以下是列表:

List = "abcd 1234 jvm something"

如何在不循环整个列表的情况下获取第二个元素“1234”?

答案1

等号之间没有空格

$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234

还有一些其他方法,尽管不如使用 shell 内部方法那么高效

$ echo $List | cut -d" " -f2
1234
$  echo $List | awk '{print $2}'
1234
$ echo $List | sed 's/^.[^ \t]* //;s/ .*//'
1234
$ echo $List | tr " " "\n"|sed -n '2p'
1234

答案2

只是为了补充 ghostdog 的答案:您还可以将$List元素放入数组中并从那里访问特定的列表元素

List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}

请注意,数组索引计为 0,1,2,... 。

这样做的好处是不会用太多的新变量污染 shell 环境。

相关内容