Skip to main content

Unix / Linux - Shell Basic Operators

There are various operators supported by each shell. We will discuss in detail about Bourne shell (default shell) in this chapter.

We will now discuss the following operators −

  • Arithmetic Operators
  • Relational Operators
  • Boolean Operators
  • String Operators
  • File Test Operators

Bourne shell didn't originally have any mechanism to perform simple arithmetic operations but it uses external programs, either awk or expr.

The following example shows how to add two numbers −


#!/bin/sh

val
=`expr 2 + 2`
echo
"Total value : $val"

The above script will generate the following result −

Total value : 4

The following points need to be considered while adding −

  • There must be spaces between operators and expressions. For example, 2+2 is not correct; it should be written as 2 + 2.
  • The complete expression should be enclosed between ‘ ‘, called the backtick.
Arithmetic Operators

The following arithmetic operators are supported by Bourne Shell.

Assume variable a holds 10 and variable b holds 20 then −


It is very important to understand that all the conditional expressions should be inside square braces with spaces around them, for example [ $a == $b ] is correct whereas, [$a==$b] is incorrect.

All the arithmetical calculations are done using long integers.

Relational Operators

Bourne Shell supports the following relational operators that are specific to numeric values. These operators do not work for string values unless their value is numeric.

For example, following operators will work to check a relation between 10 and 20 as well as in between "10" and "20" but not in between "ten" and "twenty".

Assume variable a holds 10 and variable b holds 20 then −


It is very important to understand that all the conditional expressions should be placed inside square braces with spaces around them. For example, [ $a <= $b ] is correct whereas, [$a <= $b] is incorrect.

Boolean Operators

The following Boolean operators are supported by the Bourne Shell.

Assume variable a holds 10 and variable b holds 20 then −


String Operators

The following string operators are supported by Bourne Shell.

Assume variable a holds "abc" and variable b holds "efg" then −



File Test Operators

We have a few operators that can be used to test various properties associated with a Unix file.

Assume a variable file holds an existing file name "test" the size of which is 100 bytes and has read, write and execute permission on −


Comments

Popular posts from this blog

Unix / Linux - Special Variables

W e will discuss in detail about special variable in Unix. In one of our previous chapters, we understood how to be careful when we use certain nonalphanumeric characters in variable names. This is because those characters are used in the names of special Unix variables. These variables are reserved for specific functions. For example, the  $  character represents the process ID number, or PID, of the current shell − $echo $$ The above command writes the PID of the current shell − 29949 The following table shows a number of special variables that you can use in your shell scripts − Command-Line Arguments The command-line arguments $1, $2, $3, ...$9 are positional parameters, with $0 pointing to the actual command, program, shell script, or function and $1, $2, $3, ...$9 as the arguments to the command. Following script uses various special variables related to the command line − #!/bin/sh echo "File Name: $0" echo "First Parameter : $1" echo "Second Parameter :...

FTP Server : Install Pure-FTPd

  Install Pure-FTPd to configure FTP Server. [1]. Install and Configure Pure-FTPd. # install from EPEL [root@www ~]# dnf --enablerepo=epel -y install pure-ftpd [root@www ~]# vi /etc/pure-ftpd/pure-ftpd.conf # line 77: change (no Anonymous) NoAnonymous                  yes # line 451: uncomment (if you use only IPv4) IPV4Only                     yes # line 460: uncomment (if you use only IPv6) IPV6Only                     yes [root@www ~]# systemctl enable --now pure-ftpd [2]. If SELinux is enabled, change boolean setting. [root@www ~]# setsebool -P ftpd_full_access on [3]. If Firewalld is running, allow FTP service ports. [root@www ~]# firewall-cmd --add-service=ftp --permanent success [root@www ~]# firewall-cmd --reload success

LINUX List files and directories using SSH

In order to list all files and directories using an SSH client, you would need to execute the appropriate command. The command name, in this case, is ls and it accepts various parameters. When using the command alone (without arguments): ls the output will be all visible files and folders without additional formatting or information. In order to view more information about the files (such as their permissions, ownership, last modified date, etc) and at the same time to list the files and directories, you would need to supply additional arguments to the command. The most common arguments are as follows: ls –a(Short from –all) Lists all files and folders including hidden (starting with a dot) files and directories. ls –R (Short from –Recursive) Lists recursively (i.e follows subfolders as well) all files and folders under the current directory. ls -l (Short from –long) Lists all files and folders, each on a separate line, and provides additional information about them (permission...