bash의 목록에서 요소를 얻는 방법은 무엇입니까?


39

LIST는 다음과 같습니다.

List = "abcd 1234 jvm something"

모든 목록을 반복하지 않고 두 번째 요소 "1234"를 얻는 방법은 무엇입니까?

답변:


50

등호 사이에 공백이 없습니다

$ 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

감사합니다. 코드에 의견을 남겨 주시겠습니까?
SpawnST

1
두 번째 줄을 의미합니다.
SpawnST

17
@Spawn set -- $something분할 $something상기 $IFS위치 변수 (기본 공백으로) 문자 및 양수인 분할 부분을 $1, $2...
벤자민 Bannier

43

고스트 독의 답변을 보완하기 위해 : $List의 요소를 배열에 넣고 거기에서 특정 목록 요소에 액세스 할 수 있습니다

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

배열 인덱스는 0,1,2, ...로 계산됩니다.

이것은 너무 많은 새로운 변수로 쉘 환경을 오염시키지 않는 이점이 있습니다.


멋지네요. :-)
SpawnST

1
필요 없음 echo: arr=($List)
user31894

@ghostdog은 아마도 강박적인 행동으로 편집되었습니다.
Benjamin Bannier

@ BenjaminBannier, 여러 요소를 어떻게 선택할 수 있습니까? $ {arr [1,2,3]} $와 같은 구문이 있습니까?
Kvothe
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.