|
|
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'''
| |
− |
| |
− |
| |
− | {| style="border-spacing:0;"
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Visual Cue
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Narration
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Dear friends, Welcome to the Spoken tutorial on
| |
− |
| |
− | '''Logical Operators in Bash '''
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| In this tutorial, we will learn
| |
− |
| |
− | * Use of '''Logical AND'''
| |
− | * '''Logical OR'''
| |
− | * '''Logical NOT'''
| |
− | * using a few examples
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide '''Prerequisites'''
| |
− |
| |
− |
| |
− |
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| To follow this tutorial you should have knowledge of''' '''
| |
− |
| |
− | * '''if-else statement, '''
| |
− | * '''command line arguments '''and
| |
− | * '''quoting '''in''' BASH.'''
| |
− |
| |
− | If not, for relevant tutorials, please visit our website, which is as shown.
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| For this tutorial I am using
| |
− | * '''Ubuntu Linux 12.04''' OS
| |
− | * '''GNU Bash''' version '''4.1.10'''
| |
− |
| |
− | '''GNU Bash '''version '''4''' or above is recommended for practice.
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Logical Operators
| |
− |
| |
− |
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let us understand the use of''' Logical operators.'''
| |
− |
| |
− | * '''Logical operators''' are mainly used to control program flow
| |
− | * '''Logical operators''' helps to link two''' expressions''' or '''conditions'''
| |
− | * They can be a part of''' if, while, '''or some other''' control statements '''
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Logical AND
| |
− |
| |
− | Syntax:
| |
− |
| |
− | '''<nowiki>[ $condition1 ] && [ $condition2 ]</nowiki>'''
| |
− |
| |
− |
| |
− | '''<nowiki>[ $condition1 -a $condition2 ]</nowiki>'''
| |
− |
| |
− |
| |
− |
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let's see the syntax of '''logical 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 AND '''returns''' true '''when both''' condition1 '''and '''condition2''' are '''true'''
| |
− |
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let us see the syntax of '''Logical OR'''
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Logical OR
| |
− |
| |
− |
| |
− | '''<nowiki>[ $condition1 ] || [ $condition2 ]</nowiki>'''
| |
− |
| |
− |
| |
− | '''<nowiki>[ $condition1 -o $condition2 ]</nowiki>'''
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | * '''Opening square bracket space dollar symbol condition1 space closing square bracket space vertical bar vertical bar 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 o space dollar symbol condition2 space closing square bracket'''
| |
− | * '''Logical OR '''returns''' true '''when either''' condition1 '''or '''condition2 '''is '''true'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let us learn the usage of''' Logical OR''' and '''Logical AND''' using an example.
| |
− |
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Open file
| |
− |
| |
− | On T'''ermina'''l>> Type '''gedit logical.sh'''>> Press '''Enter'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| I have already typed the code in a file named '''logical.sh'''.
| |
− |
| |
− | Open the '''terminal''' by pressing '''ctrl+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.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let me explain the code now.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>#!/bin/bash </nowiki>
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This is the '''shebang line.'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| read -p "Enter a Word : " string
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The''' read command''' reads one line of data from the''' standard input.'''
| |
− |
| |
− | '''- (hyphen) p''' display the '''prompt.'''
| |
− |
| |
− | '''string''' is a''' variable''' which stores the text entered by the user, during execution.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>if [ -z "$string" ]; then </nowiki>
| |
− |
| |
− |
| |
− |
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The '''if statement''' checks whether the entered string is '''empty.'''
| |
− |
| |
− | '''- (hyphen) z '''checks whether length of '''string''' is '''zero'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Type '''man test '''on''' terminal '''to explore various other '''string comparisons'''.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| echo "Nothing was entered "
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The '''echo''' '''statement '''will print a message if nothing was entered.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''<nowiki>[Highlight]</nowiki>'''
| |
− |
| |
− | <nowiki>elif [[ "$string" == *"raj"* ]] && [[ "$string" == *"jit"* ]]; then </nowiki>
| |
− |
| |
− | echo "$string contains both the words raj and jit"
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| If the '''string''' is not empty, the program will move to the first '''elif statement.'''
| |
− |
| |
− | Here it checks whether the entered''' string''' contains both the words '''''raj '''''and '''''jit'''''.
| |
− |
| |
− | If yes, then it echoes out a message.
| |
− |
| |
− | Please note that '''logical AND''' is used here.
| |
− |
| |
− | Hence, the message will be displayed only when both the '''conditions''' are satisfied.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''<nowiki>[Highlight]</nowiki>'''
| |
− |
| |
− | <nowiki>elif [[ "$string" == *"raj"* ]] || [[ $string = *"jit"* ]]; then </nowiki>
| |
− |
| |
− | echo "$string contains word 'raj' or 'jit'"
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| If that is not so, then the program will move onto the second '''elif statement.'''
| |
− |
| |
− | Here it checks whether the''' entered string''' contains either'' '''raj''''' or '''''jit.'''''
| |
− |
| |
− | If yes, then it displays a message.
| |
− |
| |
− | Please note that '''logical OR''' is used here.
| |
− |
| |
− | The message will be displayed only when any one of the '''conditions''' are satisfied.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| else
| |
− |
| |
− | echo "Sorry! entered word '$string' does not contain either 'raj' or 'jit'"
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Lastly, we have the default '''else statement.'''
| |
− |
| |
− | When all the above statements are false, then this statement will be executed.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| fi
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''fi''' is the end of''' multilevel if-else''' loop.
| |
− |
| |
− | Let us execute the program
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| On the '''terminal'''
| |
− |
| |
− |
| |
− | >> Type '''chmod +x logical.sh'''>> Press '''Enter'''
| |
− |
| |
− | >> Type '''./logical.sh'''>> Press '''Enter'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Switch back to the '''terminal.'''
| |
− |
| |
− | First make the file executable by typing-
| |
− |
| |
− | '''chmod space plus x space logical dot sh '''
| |
− |
| |
− | press''' Enter'''
| |
− |
| |
− | Now type '''dot slash''' '''logical.sh '''and press''' Enter'''
| |
− |
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''Highlight'''
| |
− |
| |
− | '''The output'''
| |
− |
| |
− |
| |
− | '''Enter a Word:'''
| |
− |
| |
− | Highlight
| |
− |
| |
− | Type:
| |
− |
| |
− | '''jitinraj'''
| |
− |
| |
− |
| |
− | '''jitinraj contains both the words raj and jit'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The prompt displays '''Enter a word:'''
| |
− |
| |
− | I will enter '''jitinraj'''
| |
− |
| |
− | 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 the '''conditions''' are satisfied, it displays the message.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Press '''up arrow key'''>> go to '''./logical.sh>>'''
| |
− |
| |
− | Press '''Enter'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now let us execute the script again.
| |
− |
| |
− | Press the up '''arrow key. '''
| |
− |
| |
− | Go to .'''/logical.sh '''and press '''Enter'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Highlight
| |
− |
| |
− | Type:
| |
− |
| |
− | '''abhijit'''
| |
− |
| |
− | '''abijit contains word 'raj' or 'jit''''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The prompt displays '''Enter a word:'''
| |
− |
| |
− | This time I will enter '''abhijit.'''
| |
− |
| |
− | The output is:
| |
− |
| |
− | '''abhijit contains word 'raj' or 'jit'.'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Please try executing the program with different inputs and observe the output.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let's switch back to our slides.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Logical NOT
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let's have a look at '''logical NOT '''operator.
| |
− |
| |
− | * It inverts the '''boolean''' value of an expression.
| |
− | * Which means, it returns '''true''' if the expression is '''false'''
| |
− | * and returns '''false''' if the expression is '''true'''
| |
− |
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Logical NOT
| |
− |
| |
− | Syntax
| |
− |
| |
− | <nowiki>! expression </nowiki>
| |
− |
| |
− | <nowiki>[ ! expression ]</nowiki>
| |
− |
| |
− |
| |
− |
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The syntax of '''logical NOT '''operator is
| |
− |
| |
− | * '''Exclamation mark''' space '''expression'''
| |
− |
| |
− | Or
| |
− |
| |
− | * '''Opening square bracket space exclamation mark space expression space closing square bracket'''
| |
− |
| |
− |
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Let us see an example.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Open file
| |
− |
| |
− | On '''Terminal'''>> Type '''gedit logicalNOT.sh'''>> Press '''Enter'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| I have already typed the code in a file.
| |
− |
| |
− | So, I will go to the '''terminal '''and type '''gedit logicalNOT.sh space ampersand sign'''
| |
− |
| |
− | Press''' Enter.'''
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Now type the code as shown here in your '''logicalNOT.sh''' file.
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| <nowiki>#!/bin/bash</nowiki>
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This is the''' shebang line, '''as we already know.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''<nowiki>[Highlight]</nowiki>'''
| |
− |
| |
− | <nowiki>if [ ! -f "$1" ]; then</nowiki>
| |
− |
| |
− |
| |
− |
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''$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 an '''argument'''.
| |
− |
| |
− | So, it will return '''true '''if the file exists and '''false '''if it does not exist.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Point to the NOT operator with cursor.
| |
− |
| |
− |
| |
− |
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| This '''NOT operator''' here inverses the returned value.
| |
− |
| |
− | Which means, if a file of that name exists, the conditon will be '''true.'''
| |
− |
| |
− | But the '''NOT operator '''will inverse its value to '''false'''.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''echo "File $1 does not exist"'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| And it will display the message
| |
− |
| |
− | '''FILE does not exist'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| else
| |
− |
| |
− | echo "File $1 exist"
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| And here in the '''else statement, '''it displays the message
| |
− |
| |
− | '''FILE exists'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| fi
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| '''fi''' marks the end of '''if loop.'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| On the '''terminal'''
| |
− |
| |
− | '''touch test.txt'''
| |
− |
| |
− |
| |
− |
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Switch to the '''terminal'''. Let me clear the prompt.
| |
− |
| |
− | Let's create an empty file with the name '''test.txt'''
| |
− |
| |
− | So, type :
| |
− |
| |
− | '''touch space test dot txt'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| >> Type '''chmod +x logicalNOT.sh'''>> Press '''Enter'''
| |
− |
| |
− | >> Type '''./logicalNOT.sh test.txt'''>> Press '''Enter'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Next, make the script executable by typing:''' '''
| |
− |
| |
− | '''chmod space plus x space logicalNOT dot sh'''
| |
− |
| |
− | Now type '''dot slash logical.sh space test.txt '''and press''' Enter.'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Point to test.txt in the previous command
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Our shell script will check whether the file exists.
| |
− |
| |
− | Our file '''test.txt '''exists <nowiki>;</nowiki>''''' hence the value will be''' true.'''
| |
− |
| |
− | Then the '''logical NOT''' will inverse that value and return '''false.'''
| |
− |
| |
− | Because the evaluation is '''false''', the '''else statement''' is evaluated.
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Show Output
| |
− |
| |
− | '''File 'test.txt' exists'''
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| And the message displayed is -
| |
− |
| |
− | '''File 'test.txt' exists'''
| |
− |
| |
− | |-
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"|
| |
− | | style="border-top:none;border-bottom:1pt solid #000001;border-left:1pt solid #000001;border-right:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Try executing the program again with argument '''test1.txt'''
| |
− |
| |
− | And observe the control flow, as explained before.
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Summary
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Come back to our slides. Let us summarize.
| |
− |
| |
− | In this tutorial we learnt the usage of,
| |
− |
| |
− | * '''logical AND'''
| |
− | * '''logical OR '''and
| |
− | * '''logical NOT'''
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Assignment
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Check whether
| |
− |
| |
− | * a file exists and is executable
| |
− | * using the '''logical operators '''
| |
− | * explained in this tutorial
| |
− | * (Hint: '''man test''')
| |
− |
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− |
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| 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
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− |
| |
− | Spoken Tutorial Workshops
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| 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
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− |
| |
− | Acknowledgement
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| 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
| |
− |
| |
− | |-
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| Display Slide
| |
− | | style="border:1pt solid #000001;padding-top:0cm;padding-bottom:0cm;padding-left:0.191cm;padding-right:0.191cm;"| The script has been contributed by FOSSEE and spoken-tutorial team
| |
− |
| |
− | This is Ashwini from IIT Bombay.
| |
− |
| |
− | Thank you for joining.
| |
− |
| |
− | |}
| |