Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

does linux shell support list data structure?

this question is not the same as Does the shell support sets?

i know lots of script language support list structure, such as python, python, ruby, and javascript, so what about linux shell?

does shell support such syntax?

for i in list: do      print i done 

i would first to initialize a list, for example:

ListName = [ item1, item2, ..., itemn ] 

then iterate over it

is that possible when programming shell scripts?

like image 698
hugemeow Avatar asked Sep 07 '12 10:09

hugemeow


1 Answers

It supports lists, but not as a separate data structure (ignoring arrays for the moment).

The for loop iterates over a list (in the generic sense) of white-space separated values, regardless of how that list is created, whether literally:

for i in 1 2 3; do     echo "$i" done 

or via parameter expansion:

listVar="1 2 3" for i in $listVar; do     echo "$i" done 

or command substitution:

for i in $(echo 1; echo 2; echo 3); do     echo "$i" done 

An array is just a special parameter which can contain a more structured list of value, where each element can itself contain whitespace. Compare the difference:

array=("item 1" "item 2" "item 3") for i in "${array[@]}"; do   # The quotes are necessary here     echo "$i" done  list='"item 1" "item 2" "item 3"' for i in $list; do     echo $i done for i in "$list"; do     echo $i done for i in ${array[@]}; do     echo $i done 
like image 154
chepner Avatar answered Oct 02 '22 01:10

chepner