Index Array (Lists)
This is similar to python lists, to declare a list
mylist=( str 2 3 text 3 "with space" 'more" space' )declare -a mylist- the syntax is using
()and the delimiter is space, if there are spaces, it needs to be quoted
Getting value from list
- by default only the first item will be echoed, use
[@]to get everything in the list as multiple variables - the list index is obtained using
!mylist - the way to get item from list is same as Python using
[index]
$mylist # first list item
${mylist[@]} # entire list
${!mylist[@]} # get all the index
${mylist[-1]} # last list itemLists are mutable, items can be changed or added
mylist[0]="mystr"To add item in list to the end, similar to append
mylist+=( "item" 2 )Get the length of the list
echo ${#mylist[@]}To remove a list, use unset, can remove items or entire array
unset mylist[1]- when the item is unset, even the index is removed and it is not continuous
List splicing
Bash list splicing is different, it has a start index and length (not end index)
${newlist[@]:index:length}- index is the starting index (inclusive)
- length indicate how many items from the starting index to include
Bash Dictionary
This is similar to Python dictionaries, to declare a dictionary (associative array):
declare -A mydict
mydict=( [key1]="value1" [key2]="value2" [key3]="value3" )- use
declare -Afor associative arrays - keys and values are assigned using
[key]=valuesyntax
Getting values from dictionary:
- access value by key:
${mydict[key1]} - get all keys:
${!mydict[@]} - get all values:
${mydict[@]}
echo ${mydict[key1]} # value for key1
echo ${!mydict[@]} # all keys
echo ${mydict[@]} # all valuesAdd or update key-value pairs:
mydict[newkey]="newvalue"Remove a key-value pair:
unset mydict[key2]Get the number of key-value pairs:
echo ${#mydict[@]}