Как получить элементы из списка в Bash?

Вот СПИСОК:

List = "abcd 1234 jvm something"

Как получить второй элемент "1234" без зацикливания всего списка?

2 ответа

Решение

Нет пробелов между знаком равенства

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

Некоторые другие способы, хотя и не такие эффективные, как использование внутренних компонентов оболочки

$ 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

Просто чтобы дополнить ответ призрака: вы могли бы также поставить $Listэлементы в массив и доступ к конкретному элементу списка оттуда

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

Обратите внимание, что индексы массива насчитывают 0,1,2,... .

Преимущество этого состоит в том, что вы не загрязняете среду оболочки слишком большим количеством новых переменных.

Другие вопросы по тегам