Basic Operators in Shell Scripting

There are 5 basic operators in bash/shell scripting:

  • Arithmetic Operators
  • Relational Operators
  • Boolean Operators
  • Bitwise Operators
  • File Test Operators
  1. Arithmetic Operators : These operators are used to perform normal arithmetics/mathematical operations. There are 7 arithmetic operators:
    • Addition (+): Binary operation used to add two operands.
    • Subtraction (-): Binary operation used to subtract two operands.
    • Multiplication (*) :Binary operation used to multiply two operands.
    • Division (/) :Binary operation used to divide two operands.
    • Modulus (%) :Binary operation used to find remainder of two operands.
    • Increment Operator (++) : Uniary operator used to increase the value of operand by one.
    • Decrement Operator (–) : Uniary operator used to decrease the value of a operand by one
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #!/bin/bash
      
    #reading data from the user
    read - p 'Enter a : ' a
               read
        - p 'Enter b : ' b
      
              add
        = $((a + b))
            echo Addition of a and b are $add
      
                sub
        = $((a - b))
            echo Subtraction of a and b are $sub
      
                mul
        = $((a * b))
            echo Multiplication of a and b are $mul
      
                div
        = $((a / b))
            echo division of a and b are $div
      
                mod
        = $((a % b))
              echo Modulus of a
          and b are $mod
      
          ((++a))
              echo Increment
              operator when applied on "a" results into a = $a
      
          ((--b))
              echo Decrement
              operator when applied on "b" results into b = $b

    chevron_right

    
    

    Output:

  2. Relational Operators : Relational operators are those operators which defines the relation between two operands. They give either true or false depending upon the relation. They are of 6 types:
    • ‘==’ Operator : Double equal to operator compares the two operands. Its returns true is they are equal otherwise returns false.
    • ‘!=’ Operator : Not Equal to operator return true if the two operands are not equal otherwise it returns false.
    • ‘<' Operator : Less than operator returns true if first operand is lees than second operand otherwse returns false.
    • ‘<=' Operator : Less than or equal to operator returns true if first operand is less than or equal to second operand otherwise returns false
    • ‘>’ Operator : Greater than operator return true if the first operand is greater than the second operand otherwise return false.
    • ‘>=’ Operator : Greater than or equal to operator returns true if first operand is greater than or equal to second operand otherwise returns false
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #!/bin/bash
       
    #reading data from the user
    read -p 'Enter a : ' a
    read -p 'Enter b : ' b
       
    if(( $a==$b ))
    then
        echo a is equal to b.
    else
        echo a is not equal to b.
    fi
       
    if(( $a!=$b ))
    then
        echo a is not equal to b.
    else
        echo a is equal to b.
    fi
       
    if(( $a<$b ))
    then
        echo a is less than b.
    else
        echo a is not less than b.
    fi
       
    if(( $a<=$b ))
    then
        echo a is less than or equal to b.
    else
        echo a is not less than or equal to b.
    fi
       
    if(( $a>$b ))
    then
        echo a is greater than b.
    else
        echo a is not greater than b.
    fi
       
    if(( $a>=$b ))
    then
        echo a is greater than or equal to b.
    else
        echo a is not greater than or equal to b.
    fi

    chevron_right

    
    

    Output:

  3. Logical Operators : They are also known as boolean operators. These are used to perform logical operations. They are of 3 types:
    • Logical AND (&&) : This is a binary operator, which returns true if both the operands are true otherwise returns false.
    • Logical OR (||) : This is a binary operator, which returns true is either of the operand is true or both the operands are true and returns false if none of then is false.
    • Not Equal to (!) : This is a uninary operator which returns true if the operand is false and returns false if the operand is true.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #!/bin/bash
      
    #reading data from the user
    read -p 'Enter a : ' a
    read -p 'Enter b : ' b
      
    if(($a == "true" & $b == "true" ))
    then
        echo Both are true.
    else
        echo Both are not true.
    fi
      
    if(($a == "true" || $b == "true" ))
    then
        echo Atleast one of them is true.
    else
        echo None of them is true.
    fi
      
    if(( ! $a == "true"  ))
    then
        echo "a" was intially false.
    else
         echo "a" was intially true.
     fi

    chevron_right

    
    

    Output:

  4. Bitwise Operators : A bitwise operator is an operator used to perform bitwise operations on bit patterns. They are of 6 types:
    • Bitwise And (&) : Bitwise & operator performs binary AND operation bit by bit on the operands.
    • Bitwise OR (|) : Bitwise | operator performs binary OR operation bit by bit on the operands.
    • Bitwise XOR (^) : Bitwise ^ operator performs binary XOR operation bit by bit on the operands.
    • Bitwise compliment (~) : Bitwise ~ operator performs binary NOT operation bit by bit on the operand.
    • Left Shift (<<) : This operator shifts the bits of the left operand to left by number of times specified by right operand.
    • Right Shift (>>) : This operator shifts the bits of the left operand to right by number of times specified by right operand.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #!/bin/bash
      
    #reading data from the user
    read -p 'Enter a : ' a
    read -p 'Enter b : ' b
      
    bitwiseAND=$(( a&b ))
    echo Bitwise AND of a and b is $bitwiseAND
      
    bitwiseOR=$(( a|b ))
    echo Bitwise OR of a and b is $bitwiseOR
      
    bitwiseXOR=$(( a^b ))
    echo Bitwise XOR of a and b is $bitwiseXOR
      
    bitiwiseComplement=$(( ~a ))
    echo Bitwise Compliment of a is $bitiwiseComplement
      
    leftshift=$(( a<<1 ))
    echo Left Shift of a is $leftshift
      
    rightshift=$(( b>>1 ))
    echo Right Shift of b is $rightshift

    chevron_right

    
    

    Output:

  5. File Test Operator : These operators are used to test a particular property of a file.
    • -b operator : This operator check weather a file is a block special file or not. It returns true, if the file is a block special file otherwise false.
    • -c operator : This operator checks weather a file is a character special file or not. It returns true if it is a character special file otherwise false.
    • -d operator : This operator checks if the given directory exists or not. If it exits then operators returns true otherwise false.
    • -e operator : This operator checks weather the given file exits or not. If it exits this operator returns true otherwise false.
    • -r operator : This operator checks weather the given file has read access or not. If it has read access then it returns true otherwise false.
    • -w operator : This operator check weather the given file has write access or not. If it has write then it returns true otherwise false.
    • -x operator : This operator check weather the given file has execute access or not. If it has execute access then it returns true otherwise false.
    • -s operator : This operator checks the size of the given file. If the size of given file is greater than 0 then it returns true otherwise it false.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    #!/bin/bash
      
    #reading data from the user
    read -p 'Enter file name : ' FileName
      
    if [ -e $FileName ]
    then
        echo File Exist
    else
        echo File doesnot exist
    fi
      
    if [ -s $FileName ]
    then
        echo The given file is not empty.
    else
        echo The given file is empty.
    fi
      
    if [ -r $FileName ]
    then
        echo The given file has read access.
    else
        echo The given file does not has read access.
    fi
      
    if [ -w $FileName ]
    then
        echo The given file has write access.
    else
        echo The given file does not has write access.
    fi
      
    if [ -e $FileName ]
    then
        echo The given file has execute access.
    else
        echo The given file does not has execute access.
    fi

    chevron_right

    
    

    Output:



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.