November 2024
M T W T F S S
 123
45678910
11121314151617
18192021222324
252627282930  

Categories

November 2024
M T W T F S S
 123
45678910
11121314151617
18192021222324
252627282930  

If statement and comparison operators

If statement without any brackets:
These are used to check the outcome of a command. It return the exist status of command executed after if.

if grep -i oolala lyrics.txt
then
echo “lyrics.txt file contains oolala”
else
echo “lyrics.txt file doesn’t contain oolala”
fi

if statement with []:
These are used to check the file types and compare strings.

if [ -z $variable ]
then
echo “Variable is empty”
else
echoo “Variable is not empty”
fi

if statement with [[]]:
These are used for the same purpose as [] but more versatile and doesn’t give error when &&, ||, >, < are used within these brackets unlike []. if [[ "$number1" -eq "$number2" ]] then echo "numbers are equal" else echo "numbers are not equal" fi if statement with no “if”: These are useful to evaluate a condition and take a single action. [ -f "$filename" ] || touch $filename # if $filename doesn't exist, it will touch that file [ -f "$filename" ] && rm $filename # if $filename exists, it will remove that file nested if statement: if [[ "$fruitname" == "apple" ]] then echo "Fruit is apple" elif [[ "$fruitname" == "mango" ]] then echo "Fruit is mango" else echo "Fruit can not be identified" fi Compound if conditions This is a combination of more than one test expression in if statement. Best explained with an example. num1=10 num2=20 if [ "$num1" -eq 10 ] && [ "$num2" -eq 20 ] then echo "Number test successful" => It is successful because both numbers match their values
else
echo “Number test failed”
fi
if [ “$num1” -eq 10 ] || [ “$num2” -eq 30 ]
then
echo “Number test successful” => It is successful because num1 matches 10
else
echo “Number test failed”
fi
if [ “$num1” -eq 10 -a “$num2” -eq 20 ]
then
echo “Number test successful” => It is successful because both numbers match their values
else
echo “Number test failed”
fi
if [ “$num1” -eq 30 -o “$num2” -eq 20 ]
then
echo “Number test successful” => It is successful because num2 matches 20
else
echo “Number test failed”
fi

fruit1=apple
fruit2=mango
if [ “$fruit1” == apple ] && [ “$fruit2” == mango ]
then
echo “String test successful” => It is successful because both strings match their values
else
echo “String test unsuccessful”
fi

Test Operators

File test operators:
To be used as:-
if [ “operator” $filename ]; then

-e : Filename exists
-d : Filename exists and is a directory
-f : Filename exists and is a regular file
-s : Filename exists and its size is greater than zero
-b : Filename exists and is a block device
-c : Filename exists and is a character device
-p : Filename exists and is a pipe
-L : Filename exists and is a symbolic Link
-S : Filename exists and is a socker
-g : setgid is set on filename
-u : setuid is set on filename
-k : sticky bit is set on filename
-r : user running the script has read permission on given file
-w : user running the script has write permission on given file
-x : user running the script has execute permission on given file
-O : user running the script is owner of given file
-G : user running the script has same group id as of the script
file1 -nt file2 : File file1 is newer than file2
file1 -ot file2 : File file1 is older than file2
file1 -ef file2 : file1 and file2 are hard links to the same file

String operators:
To be used as:-
if [ “$string1” “$string2” ]; then

= : strings are equal
== : strings are equal
!= : strings are not equal
< : string1 is less than string2 in ASCII order. if [[ "string1" < "string2" ]] or if [[ "string1" \< "string2" ] > : string1 is more than string2 in ASCII order.
if [[ “string1” > “string2” ]] or if [[ “string1” \> “string2” ]
-z : string is empty
-n : string is not empty

Numeric Operators:
To be used as:-
if [ “$number1” “$number2” ]; then

-eq : numbers are equal
-ne : numbers are not equal
-gt : number1 is greater than number2
-ge : number1 is greater than or equal to number2
-lt : number1 is less than number2
-le : number1 is less than or equal to number2
< : number1 is less than number2. To be used within (()) without the word "if". (( "$num1" < "$num2" )) <= : number1 is less than or equal to number2. To be used within (()) without the word "if". (( "$num1" <= "$num2" )) > : number1 is greater than number2. To be used within (()) without the word “if”.
(( “$num1” > “$num2” ))
>= : number1 is greater than or equal to number2. To be used within (()) without the word “if”.
(( “$num1” >= “$num2” ))

#! /bin/ksh

if [[ -s $FILE ]] ; then
echo “$FILE has data.”
else
echo “$FILE is empty.”
fi ;

Reading from a file

for line in $(cat /etc/passwd)
do
echo $line
done

Iterate for a range

for number in {1..10}
do
echo “Current number is $number”
done

Loop for values given

for planet in earth mars saturn jupiter
do
echo “The planet name is $planet”
done

Loop for variable containing multiple values

planets=”earth mars saturn jupiter pluto”
for planet in $planets
do
echo “The planet name is $planet”
done

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>