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. |