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?

1

2 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 
6

For make a list, simply do that

colors=(red orange white "light gray") 

Technically is an array, but - of course - it has all list features.
Even python list are implemented with array

4

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like