S08 Shell Scripting Extras Arrays Slides
S08 Shell Scripting Extras Arrays Slides
Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries.
Linux Course
Arrays
Sarfraaz Ahmed
Linux Course
Strings as Arrays
1 #!/usr/bin/env bash
2
3 print_words() {
4 for item in "$@" $ ./slogan.sh
Input 5 do Aim
Field 6 echo $item Big
Separater : 7 done Can
IFS 8 } Do
9
10 work="Aim Big Can Do"
11 print_words $work
Sarfraaz Ahmed
Linux Course
Strings as Arrays
1 #!/usr/bin/env bash
2
3 print_words() {
4 for item in "$@"
5 do
6 echo $item $ ./slogan.sh
7 done IFS is : "
8 } "
IFS 9 Arun,Ben,Carol,Dan
de nes word 10 line="Arun,Ben,Carol,Dan" IFS is : ","
boundaries 11 Arun
12 ( Ben
for splitting 13 echo "IFS is : \"$IFS\"" Carol
14 print_words $line Dan
15
16 IFS=","
17 echo "IFS is : \"$IFS\""
18 print_words $line
19 )
Sarfraaz Ahmed
fi
Linux Course
Strings as Arrays
1 #!/usr/bin/env bash
2
Insert “We”
. . . . .
20
between
21 work="Aim Big Can Do" “Big” and “Can”
22 echo $work
23
24 sub="We"
26 idx=0 $ ./slogan.sh
Much 27 total=${#work} Aim Big Can Do
28 Aim
easier to do this, Aim Big We
29 for item in $work
if we use 30 do Aim Big We Can
Shell Arrays 31 new_work="$new_work $item” Aim Big We Can Do
32 if [ $idx -eq 1 ] Aim Big We Can Do
33 then
34 new_work="$new_work $sub”
35 fi
36 echo $new_work
37 idx=$((idx + 1))
38 done
39 echo $new_work
Sarfraaz Ahmed
Linux Course
Arrays
• A data structure that represents a collection of
items
Sarfraaz Ahmed
Linux Course
Arrays
Declaring an Array
colors[0]=“Red”
colors[1]=“Green”
colors[2]=“Blue”
Sarfraaz Ahmed
Linux Course
Arrays
Printing elements of an Array
$ echo ${metros[0]}
Delhi
$ echo ${metros[1]}
Mumbai
$ idx=3
$ echo ${metros[$idx]}
Kolkatta
$ echo ${metros}
Delhi
Sarfraaz Ahmed
Linux Course
Arrays
Printing an entire Array
Entire array is
expanded to a
$ echo “${cities[*]}” single word
Always enclose New York London Paris
$
within
$ echo “${cities[@]}”
“double quotes” New York London Paris
Each element is
expanded as a
separate word
Sarfraaz Ahmed
Linux Course
Arrays
Printing an entire Array
Sarfraaz Ahmed
Linux Course
Arrays
Printing an entire Array Each element is
expanded as a
separate word
$ ./print.sh
$ ./print.sh New York
New York London Paris London
Paris
Sarfraaz Ahmed
Linux Course
Arrays
Printing an entire Array
$ ./print.sh
Aim
Big
Can
Do
Sarfraaz Ahmed
Linux Course
Array Length
cities=(“New York” “London” “Paris”)
Length of str=“${cities[1]}”
London
element of array echo $str
at index 1
echo ${#str} 6
echo ${#cities[1]} 6
Sarfraaz Ahmed
Linux Course
Array Operations
Concatenating Arrays
capitals=(“${metros[@]}” “${cities[@]}”)
capitals=(“${capitals[@]}” “Tokyo”)
Sarfraaz Ahmed
Linux Course
Slice of an Array
metros=(Delhi Mumbai Chennai Kolkatta)
3 elements
from index 1
$ echo ${metros[@]:1:3}
Delhi Mumbai
All elements
from index 2
$ echo ${metros[@]:2}
Chennai Kolkatta
Sarfraaz Ahmed
Linux Course
$ idx=2
$ sub=“We”
$ new_work=(${work[@]:0:$idx} $sub ${work[@]:$idx})
$ echo ${new_work[@]}
Aim Big We Can Do
Sarfraaz Ahmed
Linux Course
THANK YOU
Sarfraaz Ahmed