Difference between revisions of "BASH/C2/Logical-Operators/English"
(Editing) |
(Editing again) |
||
Line 61: | Line 61: | ||
* 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 | * 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 | * Or we can use this syntax | ||
− | * Opening square bracket space dollar symbol condition1 space hyphen a space dollar symbol condition2 space closing square bracket | + | * 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 | * '''Logical ANDreturns truewhen both condition1 '''andcondition2 aretrue | ||
|- | |- | ||
Line 135: | Line 138: | ||
|[Highlight] | |[Highlight] | ||
− | elif[["$string"%20==%20*"raj"*|"$string" == *"raj"*]] | + | |
− | |[[$string%20=%20*"jit"*|$string = *"jit"*]]; then | + | |
+ | elif[[./"$string"%20==%20*"raj"*|"$string" == *"raj"*]] | ||
+ | |[[./$string%20=%20*"jit"*|$string = *"jit"*]]; then | ||
+ | |||
+ | |||
echo "$string contains word 'raj' or 'jit'" | echo "$string contains word 'raj' or 'jit'" | ||
Line 237: | Line 244: | ||
Syntax | Syntax | ||
− | ! expression | + | [ ! expression ] |
[ ! expression ] | [ ! expression ] | ||
Line 253: | Line 260: | ||
|Open file | |Open file | ||
− | OnTerminal>> Typegedit logicalNOT.sh>> PressEnter | + | OnTerminal>> Typegedit logicalNOT.sh |
+ | |||
+ | >> PressEnter | ||
|I have already typed the code in a file. | |I have already typed the code in a file. | ||
− | So, I will go to the '''terminal '''and typegedit logicalNOT.sh space ampersand sign | + | So, I will go to the '''terminal '''and typegedit |
+ | |||
+ | logicalNOT.sh space ampersand sign | ||
Press' Enter.' | Press' Enter.' | ||
Line 335: | Line 346: | ||
| | | | ||
|Try executing the program again with argumenttest1.txt | |Try executing the program again with argumenttest1.txt | ||
+ | |||
+ | |||
And observe the control flow, as explained before. | And observe the control flow, as explained before. |
Latest revision as of 12:45, 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
symbol condition1 space hyphen a space dollar symbol condition2 space closing square bracket
|
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.
|
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. |