Deoarece cochilia dvs. preferată este Peștele, vă voi oferi trei opțiuni.
În primul rând, având în vedere DataList
într-un format șir, puteți utiliza despicat coarda
pentru a împărți liniile individuale într-o listă reală:
> setați DataList "
Pisică
Câine
Iepure
Porcușor de Guineea
Hamster
"
> set --show DataList
$DataList: stabilit în domeniul global, neexportat, cu 1 elemente
$DataList[1]: |\nPisică\nCâine\nIepure\nCobai\nHamster\n|
> setați valoarea (și împărțit -n \n „$DataList”)
> set --show Value
$Value: stabilit în domeniul global, neexportat, cu 5 elemente
$Value[1]: |Pisica|
$Value[2]: |Câine|
$Value[3]: |Iepure|
$Value[4]: |Cobai|
$Value[5]: |Hamster|
> echo $Value[2]
Câine
^ Liniile goale din exemplu sunt doar pentru lizibilitate și nu apar în rezultatul real
Dar dacă puteți, încorporați oricum datele ca o listă literală în script și evitați suplimentar despicat coarda
:
> setați DataList „Cat” \
"Câine" \
"Iepure" \
"Porcușor de Guineea" \
"Hamster"
> set --show DataList
$DataList: setat în domeniul global, neexportat, cu 5 elemente
$DataList[1]: |Cat|
$DataList[2]: |Câine|
$DataList[3]: |Iepure|
$DataList[4]: |Cobai|
$DataList[5]: |Hamster|
> echo $DataList[2]
Câine
În cele din urmă, întrebarea dvs., luată literal, este să separați lista în variabile, mai degrabă decât o variabilă care conține o listă. Presupun că nu este într-adevăr ce ai vrut sa spui. Ar fi puțin patologic, IMHO, deoarece ați pierde capacitatea de a număra, repeta și indexa cu ușurință rezultatele, dar poate sa fi realizat ...
setați DataList "
Pisică
Câine
Iepure
Porcușor de Guineea
Hamster
"
set v (sir împărțit -n \n „$DataList”)
set script (pentru i în (seq (număr $v))
echo 'set Value' (matematică $i-1) '"'$v[$i]'"'
Sfârşit)
eval (unire șir ";" $scrpt)
set --erase v
set --erase srpt
Rezultate în:
$Value0 = „Pisică”
$Value1 = „Câine”
$Value2 = „Iepure”
$Value3 = "Cobai"
$Value4 = „Hamster”