Difference between revisions of "BASH/C2/Logical-Operators/English"
(Blanked the page) |
(Editing) |
||
Line 1: | Line 1: | ||
+ | Title of script: Logical Operators in Bash | ||
+ | Author: Lavitha pereira | ||
+ | |||
+ | Keywords: Video tutorial, Bash Shell, Logical AND, Logical OR, Logical NOT | ||
+ | |||
+ | {| border="1" | ||
+ | !width="50%"| <center>Visual Cue</center> | ||
+ | !width="50%"| <center>Narration</center> | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |Dear friends, Welcome to the Spoken tutorial on | ||
+ | |||
+ | '''Logical Operators in Bash ''' | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |In this tutorial, we will learn | ||
+ | |||
+ | * Use ofLogical AND | ||
+ | * Logical OR | ||
+ | * Logical NOT | ||
+ | * using a few examples | ||
+ | |- | ||
+ | |Display SlidePrerequisites | ||
+ | |To follow this tutorial you should have knowledge of''' ''' | ||
+ | |||
+ | * '''if-else statement, ''' | ||
+ | * '''command line arguments '''and | ||
+ | * 'quotingin BASH.' | ||
+ | |||
+ | If not, for relevant tutorials, please visit our website, which is as shown. | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |For this tutorial I am using | ||
+ | |||
+ | * Ubuntu Linux 12.04 OS | ||
+ | * GNU Bash version4.1.10 | ||
+ | |||
+ | '''GNU Bash '''version4 or above is recommended for practice. | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Logical Operators | ||
+ | |Let us understand the use of' Logical operators.' | ||
+ | |||
+ | * Logical operators are mainly used to control program flow | ||
+ | * Logical operators helps to link two' expressions' orconditions | ||
+ | * They can be a part of''' if, while,or some other control statements ''' | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Logical AND | ||
+ | |||
+ | Syntax: | ||
+ | |||
+ | [ $condition1 ] && [ $condition2 ] | ||
+ | |||
+ | [ $condition1 -a $condition2 ] | ||
+ | |Let's see the syntax oflogical AND | ||
+ | |||
+ | * Opening square bracket space dollar symbol condition1 space closing square bracket space ampersand ampersand space opening square bracket space dollar symbol condition2 space closing square bracket | ||
+ | * Or we can use this syntax | ||
+ | * Opening square bracket space dollar symbol condition1 space hyphen a space dollar symbol condition2 space closing square bracket | ||
+ | * '''Logical ANDreturns truewhen both condition1 '''andcondition2 aretrue | ||
+ | |- | ||
+ | | | ||
+ | |Let us see the syntax ofLogical OR | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Logical OR | ||
+ | |||
+ | '''[ $condition1 ] | ||
+ | |[ $condition2 ]''' | ||
+ | |||
+ | [ $condition1 -o $condition2 ] | ||
+ | |- | ||
+ | | | ||
+ | |Let us learn the usage of' Logical OR' andLogical AND using an example. | ||
+ | |- | ||
+ | |Open file | ||
+ | |||
+ | On Terminal>> Typegedit logical.sh>> PressEnter | ||
+ | |I have already typed the code in a file namedlogical.sh. | ||
+ | |||
+ | Open theterminal by pressingctrl+alt+t keys simultaneousely on your keyboard. | ||
+ | |||
+ | Type: | ||
+ | |||
+ | gedit logical.sh & | ||
+ | |||
+ | press' Enter.' | ||
+ | |||
+ | Now type the code as shown here in your''' logical.sh '''file. | ||
+ | |- | ||
+ | | | ||
+ | |Let me explain the code now. | ||
+ | |- | ||
+ | |#!/bin/bash | ||
+ | |This is theshebang line. | ||
+ | |- | ||
+ | |read -p "Enter a Word : " string | ||
+ | |The' read command' reads one line of data from the' standard input.' | ||
+ | |||
+ | - (hyphen) p display theprompt. | ||
+ | |||
+ | string is a' variable' which stores the text entered by the user, during execution. | ||
+ | |- | ||
+ | |if [ -z "$string" ]; then | ||
+ | |Theif statement checks whether the entered string isempty. | ||
+ | |||
+ | '''- (hyphen) z '''checks whether length ofstring iszero | ||
+ | |- | ||
+ | | | ||
+ | |Type '''man teston terminal '''to explore various otherstring comparisons. | ||
+ | |- | ||
+ | |echo "Nothing was entered " | ||
+ | |Theecho '''statement '''will print a message if nothing was entered. | ||
+ | |- | ||
+ | |[Highlight] | ||
+ | |||
+ | elif [[ "$string" == *"raj"* ]] && [[ "$string" == *"jit"* ]]; then | ||
+ | |||
+ | echo "$string contains both the words raj and jit" | ||
+ | |If thestring is not empty, the program will move to the firstelif statement. | ||
+ | |||
+ | Here it checks whether the entered' string' contains both the words'raj'andjit. | ||
+ | |||
+ | If yes, then it echoes out a message. | ||
+ | |||
+ | Please note thatlogical AND is used here. | ||
+ | |||
+ | Hence, the message will be displayed only when both theconditions are satisfied. | ||
+ | |- | ||
+ | |[Highlight] | ||
+ | |||
+ | elif[["$string"%20==%20*"raj"*|"$string" == *"raj"*]] | ||
+ | |[[$string%20=%20*"jit"*|$string = *"jit"*]]; then | ||
+ | |||
+ | echo "$string contains word 'raj' or 'jit'" | ||
+ | |- | ||
+ | |else | ||
+ | |||
+ | echo "Sorry! entered word '$string' does not contain either 'raj' or 'jit'" | ||
+ | |Lastly, we have the defaultelse statement. | ||
+ | |||
+ | When all the above statements are false, then this statement will be executed. | ||
+ | |- | ||
+ | |fi | ||
+ | |fi is the end of' multilevel if-else' loop. | ||
+ | |||
+ | Let us execute the program | ||
+ | |- | ||
+ | |On theterminal | ||
+ | |||
+ | >> Typechmod +x logical.sh>> PressEnter | ||
+ | |||
+ | >> Type./logical.sh>> PressEnter | ||
+ | |Switch back to theterminal. | ||
+ | |||
+ | First make the file executable by typing- | ||
+ | |||
+ | '''chmod space plus x space logical dot sh ''' | ||
+ | |||
+ | press' Enter' | ||
+ | |||
+ | Now typedot slash'logical.shand press Enter' | ||
+ | |- | ||
+ | |Highlight | ||
+ | |||
+ | The output | ||
+ | |||
+ | Enter a Word: | ||
+ | |||
+ | Highlight | ||
+ | |||
+ | Type: | ||
+ | |||
+ | jitinraj | ||
+ | |||
+ | jitinraj contains both the words raj and jit | ||
+ | |The prompt displaysEnter a word: | ||
+ | |||
+ | I will enterjitinraj | ||
+ | |||
+ | The output is: | ||
+ | |||
+ | jitinraj contains both the words raj and jit | ||
+ | |||
+ | This means that the control was passed to the second statement. | ||
+ | |||
+ | And as both theconditions are satisfied, it displays the message. | ||
+ | |- | ||
+ | |Pressup arrow key>> go to./logical.sh>> | ||
+ | |||
+ | PressEnter | ||
+ | |Now let us execute the script again. | ||
+ | |||
+ | Press the up '''arrow key. ''' | ||
+ | |||
+ | Go to .'''/logical.sh '''and pressEnter | ||
+ | |- | ||
+ | |Highlight | ||
+ | |||
+ | Type: | ||
+ | |||
+ | abhijit | ||
+ | |||
+ | abijit contains word 'raj' or 'jit' | ||
+ | |The prompt displaysEnter a word: | ||
+ | |||
+ | This time I will enterabhijit. | ||
+ | |||
+ | The output is: | ||
+ | |||
+ | abhijit contains word 'raj' or 'jit'. | ||
+ | |- | ||
+ | | | ||
+ | |Please try executing the program with different inputs and observe the output. | ||
+ | |- | ||
+ | | | ||
+ | |Let's switch back to our slides. | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Logical NOT | ||
+ | |Let's have a look at '''logical NOT '''operator. | ||
+ | |||
+ | * It inverts theboolean value of an expression. | ||
+ | * Which means, it returnstrue if the expression isfalse | ||
+ | * and returnsfalse if the expression istrue | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Logical NOT | ||
+ | |||
+ | Syntax | ||
+ | |||
+ | ! expression | ||
+ | |||
+ | [ ! expression ] | ||
+ | |The syntax of '''logical NOT '''operator is | ||
+ | |||
+ | * Exclamation mark spaceexpression | ||
+ | |||
+ | Or | ||
+ | |||
+ | * Opening square bracket space exclamation mark space expression space closing square bracket | ||
+ | |- | ||
+ | | | ||
+ | |Let us see an example. | ||
+ | |- | ||
+ | |Open file | ||
+ | |||
+ | OnTerminal>> Typegedit logicalNOT.sh>> PressEnter | ||
+ | |I have already typed the code in a file. | ||
+ | |||
+ | So, I will go to the '''terminal '''and typegedit logicalNOT.sh space ampersand sign | ||
+ | |||
+ | Press' Enter.' | ||
+ | |- | ||
+ | | | ||
+ | |Now type the code as shown here in yourlogicalNOT.sh file. | ||
+ | |- | ||
+ | |#!/bin/bash | ||
+ | |This is the''' shebang line, '''as we already know. | ||
+ | |- | ||
+ | |[Highlight] | ||
+ | |||
+ | if [ ! -f "$1" ]; then | ||
+ | |$1 is the first''' command line argument '''passed to the script. | ||
+ | |||
+ | '''- (hyphen) f '''checks if the file exists with the same name that was passed as anargument. | ||
+ | |||
+ | So, it will return '''true '''if the file exists and '''false '''if it does not exist. | ||
+ | |- | ||
+ | |Point to the NOT operator with cursor. | ||
+ | |ThisNOT operator here inverses the returned value. | ||
+ | |||
+ | Which means, if a file of that name exists, the conditon will betrue. | ||
+ | |||
+ | But the '''NOT operator '''will inverse its value tofalse. | ||
+ | |- | ||
+ | |echo "File $1 does not exist" | ||
+ | |And it will display the message | ||
+ | |||
+ | FILE does not exist | ||
+ | |- | ||
+ | |else | ||
+ | |||
+ | echo "File $1 exist" | ||
+ | |And here in the '''else statement, '''it displays the message | ||
+ | |||
+ | FILE exists | ||
+ | |- | ||
+ | |fi | ||
+ | |fi marks the end ofif loop. | ||
+ | |- | ||
+ | |On theterminal | ||
+ | |||
+ | touch test.txt | ||
+ | |Switch to theterminal. Let me clear the prompt. | ||
+ | |||
+ | Let's create an empty file with the nametest.txt | ||
+ | |||
+ | So, type : | ||
+ | |||
+ | touch space test dot txt | ||
+ | |- | ||
+ | |>> Typechmod +x logicalNOT.sh>> PressEnter | ||
+ | |||
+ | >> Type./logicalNOT.sh test.txt>> PressEnter | ||
+ | |Next, make the script executable by typing:''' ''' | ||
+ | |||
+ | chmod space plus x space logicalNOT dot sh | ||
+ | |||
+ | Now type'dot slash logical.sh space test.txtand press Enter.' | ||
+ | |- | ||
+ | |Point to test.txt in the previous command | ||
+ | |Our shell script will check whether the file exists. | ||
+ | |||
+ | Our file'test.txtexists ; hence the value will be' true.' | ||
+ | |||
+ | Then thelogical NOT will inverse that value and returnfalse. | ||
+ | |||
+ | Because the evaluation isfalse, theelse statement is evaluated. | ||
+ | |- | ||
+ | |Show Output | ||
+ | |||
+ | File 'test.txt' exists | ||
+ | |And the message displayed is - | ||
+ | |||
+ | File 'test.txt' exists | ||
+ | |- | ||
+ | | | ||
+ | |Try executing the program again with argumenttest1.txt | ||
+ | |||
+ | And observe the control flow, as explained before. | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Summary | ||
+ | |Come back to our slides. Let us summarize. | ||
+ | |||
+ | In this tutorial we learnt the usage of, | ||
+ | |||
+ | * logical AND | ||
+ | * '''logical OR '''and | ||
+ | * logical NOT | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Assignment | ||
+ | |Check whether | ||
+ | |||
+ | * a file exists and is executable | ||
+ | * using the '''logical operators ''' | ||
+ | * explained in this tutorial | ||
+ | * (Hint:man test) | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |Watch the video available at the link shown below | ||
+ | |||
+ | It summarizes the Spoken Tutorial project | ||
+ | |||
+ | If you do not have good bandwidth, you can download and watch it | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Spoken Tutorial Workshops | ||
+ | |The Spoken Tutorial Project Team | ||
+ | |||
+ | Conducts workshops using spoken tutorials | ||
+ | |||
+ | Gives certificates to those who pass an online test | ||
+ | |||
+ | For more details, please write to | ||
+ | |||
+ | contact@spoken-tutorial.org | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |||
+ | Acknowledgement | ||
+ | |Spoken Tutorial Project is a part of the Talk to a Teacher project | ||
+ | |||
+ | It is supported by the National Mission on Education through ICT, MHRD, Government of India | ||
+ | |||
+ | More information on this Mission is available at:[http://spoken-tutorial.org/NMEICT-Intro http://spoken-tutorial.org/NMEICT-Intro] | ||
+ | |- | ||
+ | |Display Slide | ||
+ | |The script has been contributed by FOSSEE and spoken-tutorial team | ||
+ | |||
+ | This is Ashwini from IIT Bombay. | ||
+ | |||
+ | Thank you for joining. | ||
+ | |} |
Revision as of 12:42, 25 November 2014
Title of script: Logical Operators in Bash
Author: Lavitha pereira
Keywords: Video tutorial, Bash Shell, Logical AND, Logical OR, Logical NOT
|
| |
---|---|---|
Display Slide | Dear friends, Welcome to the Spoken tutorial on
Logical Operators in Bash | |
Display Slide | In this tutorial, we will learn
| |
Display SlidePrerequisites | To follow this tutorial you should have knowledge of
If not, for relevant tutorials, please visit our website, which is as shown. | |
Display Slide | For this tutorial I am using
GNU Bash version4 or above is recommended for practice. | |
Display Slide
Logical Operators |
Let us understand the use of' Logical operators.'
| |
Display Slide
Logical AND Syntax: [ $condition1 ] && [ $condition2 ] [ $condition1 -a $condition2 ] |
Let's see the syntax oflogical AND
| |
Let us see the syntax ofLogical OR | ||
Display Slide
Logical OR [ $condition1 ] |
[ $condition2 ]
[ $condition1 -o $condition2 ] | |
Let us learn the usage of' Logical OR' andLogical AND using an example. | ||
Open file
On Terminal>> Typegedit logical.sh>> PressEnter |
I have already typed the code in a file namedlogical.sh.
Open theterminal by pressingctrl+alt+t keys simultaneousely on your keyboard. Type: gedit logical.sh & press' Enter.' Now type the code as shown here in your logical.sh file. | |
Let me explain the code now. | ||
#!/bin/bash | This is theshebang line. | |
read -p "Enter a Word : " string | The' read command' reads one line of data from the' standard input.'
- (hyphen) p display theprompt. string is a' variable' which stores the text entered by the user, during execution. | |
if [ -z "$string" ]; then | Theif statement checks whether the entered string isempty.
- (hyphen) z checks whether length ofstring iszero | |
Type man teston terminal to explore various otherstring comparisons. | ||
echo "Nothing was entered " | Theecho statement will print a message if nothing was entered. | |
[Highlight]
elif "$string" == *"raj"* && "$string" == *"jit"* ; then echo "$string contains both the words raj and jit" |
If thestring is not empty, the program will move to the firstelif statement.
Here it checks whether the entered' string' contains both the words'raj'andjit. If yes, then it echoes out a message. Please note thatlogical AND is used here. Hence, the message will be displayed only when both theconditions are satisfied. | |
[Highlight] | $string = *"jit"*; then
echo "$string contains word 'raj' or 'jit'" | |
else
echo "Sorry! entered word '$string' does not contain either 'raj' or 'jit'" |
Lastly, we have the defaultelse statement.
When all the above statements are false, then this statement will be executed. | |
fi | fi is the end of' multilevel if-else' loop.
Let us execute the program | |
On theterminal
>> Typechmod +x logical.sh>> PressEnter >> Type./logical.sh>> PressEnter |
Switch back to theterminal.
First make the file executable by typing- chmod space plus x space logical dot sh press' Enter' Now typedot slash'logical.shand press Enter' | |
Highlight
The output Enter a Word: Highlight Type: jitinraj jitinraj contains both the words raj and jit |
The prompt displaysEnter a word:
I will enterjitinraj The output is: jitinraj contains both the words raj and jit This means that the control was passed to the second statement. And as both theconditions are satisfied, it displays the message. | |
Pressup arrow key>> go to./logical.sh>>
PressEnter |
Now let us execute the script again.
Press the up arrow key. Go to ./logical.sh and pressEnter | |
Highlight
Type: abhijit abijit contains word 'raj' or 'jit' |
The prompt displaysEnter a word:
This time I will enterabhijit. The output is: abhijit contains word 'raj' or 'jit'. | |
Please try executing the program with different inputs and observe the output. | ||
Let's switch back to our slides. | ||
Display Slide
Logical NOT |
Let's have a look at logical NOT operator.
| |
Display Slide
Logical NOT Syntax |
expression
[ ! expression ] |
The syntax of logical NOT operator is
Or
|
Let us see an example. | ||
Open file
OnTerminal>> Typegedit logicalNOT.sh>> PressEnter |
I have already typed the code in a file.
So, I will go to the terminal and typegedit logicalNOT.sh space ampersand sign Press' Enter.' | |
Now type the code as shown here in yourlogicalNOT.sh file. | ||
#!/bin/bash | This is the shebang line, as we already know. | |
[Highlight]
if [ ! -f "$1" ]; then |
$1 is the first command line argument passed to the script.
- (hyphen) f checks if the file exists with the same name that was passed as anargument. So, it will return true if the file exists and false if it does not exist. | |
Point to the NOT operator with cursor. | ThisNOT operator here inverses the returned value.
Which means, if a file of that name exists, the conditon will betrue. But the NOT operator will inverse its value tofalse. | |
echo "File $1 does not exist" | And it will display the message
FILE does not exist | |
else
echo "File $1 exist" |
And here in the else statement, it displays the message
FILE exists | |
fi | fi marks the end ofif loop. | |
On theterminal
touch test.txt |
Switch to theterminal. Let me clear the prompt.
Let's create an empty file with the nametest.txt So, type : touch space test dot txt | |
>> Typechmod +x logicalNOT.sh>> PressEnter
>> Type./logicalNOT.sh test.txt>> PressEnter |
Next, make the script executable by typing:
chmod space plus x space logicalNOT dot sh Now type'dot slash logical.sh space test.txtand press Enter.' | |
Point to test.txt in the previous command | Our shell script will check whether the file exists.
Our file'test.txtexists ; hence the value will be' true.' Then thelogical NOT will inverse that value and returnfalse. Because the evaluation isfalse, theelse statement is evaluated. | |
Show Output
File 'test.txt' exists |
And the message displayed is -
File 'test.txt' exists | |
Try executing the program again with argumenttest1.txt
And observe the control flow, as explained before. | ||
Display Slide
Summary |
Come back to our slides. Let us summarize.
In this tutorial we learnt the usage of,
| |
Display Slide
Assignment |
Check whether
| |
Display Slide | Watch the video available at the link shown below
It summarizes the Spoken Tutorial project If you do not have good bandwidth, you can download and watch it | |
Display Slide
Spoken Tutorial Workshops |
The Spoken Tutorial Project Team
Conducts workshops using spoken tutorials Gives certificates to those who pass an online test For more details, please write to contact@spoken-tutorial.org | |
Display Slide
Acknowledgement |
Spoken Tutorial Project is a part of the Talk to a Teacher project
It is supported by the National Mission on Education through ICT, MHRD, Government of India More information on this Mission is available at:http://spoken-tutorial.org/NMEICT-Intro | |
Display Slide | The script has been contributed by FOSSEE and spoken-tutorial team
This is Ashwini from IIT Bombay. Thank you for joining. |