นี่คือรายการ:
List = "abcd 1234 jvm something"
วิธีรับองค์ประกอบที่สอง "1234" โดยไม่ต้องวนซ้ำทุกรายการ
นี่คือรายการ:
List = "abcd 1234 jvm something"
วิธีรับองค์ประกอบที่สอง "1234" โดยไม่ต้องวนซ้ำทุกรายการ
คำตอบ:
ไม่มีช่องว่างระหว่างเครื่องหมายเท่ากับ
$ List="abcd 1234 jvm something"
$ set -- $List
$ echo $2
1234
บางวิธีอื่น ๆ แม้ว่าจะไม่ได้มีประสิทธิภาพเท่ากับการใช้ 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
แยก$something
ที่$IFS
ตัวละคร (โดยพื้นที่เริ่มต้น) และกำหนดส่วนแบ่งให้กับตัวแปรตำแหน่ง$1
, $2
...
เพียงเพื่อเสริมคำตอบของ ghostdog: คุณสามารถใส่$List
องค์ประกอบของอาร์เรย์และเข้าถึงองค์ประกอบรายการเฉพาะจากที่นั่น
List="abcd 1234 jvm something"
arr=($List)
echo ${arr[1]}
โปรดทราบว่าดัชนีอาร์เรย์จะถูกนับ 0,1,2, ...
สิ่งนี้มีข้อดีคือไม่ก่อให้เกิดมลพิษต่อสิ่งแวดล้อมเชลล์ด้วยตัวแปรใหม่มากเกินไป
echo
: arr=($List)