Here is a LIST:
List = "abcd 1234 jvm something"
How to get the second element "1234" without looping all the list?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityno spaces between equal sign
$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234
Some other ways, although not as efficient as using shell's internals
$ 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
splits $something
at the $IFS
character (by default space) and assigns the split parts to the positional variables $1
,$2
,...
Mar 19, 2010 at 3:44
Just to supplement ghostdog's answer: you could also put $List
's elements into an array and access the specific list element from there
List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}
Note that the array indices are counted 0,1,2,... .
This has the advantage of not polluting the shell environment with too many new variables.
for v in "${arr[@]:1}"; do echo "$v"; done
... (i) takes all array elements "${arr[@]}"
, (ii) gets a slice of them, consisting of 2nd through last elements "${arr[@]:1}"
, and (iii) loops each into $v
.