Відповіді:
немає пробілів між знаком рівності
$ 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
set -- $something
розщеплюється $something
на $IFS
характер (за замовчуванням простору) і привласнює розщеплені частини позиційним змінних $1
, $2
...
Просто для доповнення відповіді ghostdog: ви також можете помістити $List
елементи в масив і отримати доступ до певного елемента списку звідти
List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}
Зауважимо, що індекси масиву підраховуються 0,1,2, ....
Це має перевагу в тому, що не забруднює середовище оболонки занадто великою кількістю нових змінних.
echo
: arr=($List)