Skip to main content

True or False with Bash

One of the first rules that is taught in any programming course is that 0 means False and anything that is non-zero is considered True.

But when you come to system programming in Unix environment, you need to completely forget this basic programming rule. In unix shells, this rule is flipped and 0 means true / success while anything non-zero means false / failure. Every executed command in unix shells returns an exit status according to this convention.

Let's see some examples in bash
We will use the echo $? to get the exit status for the previously executed command. (The detailed explanation of this command is out of the scope of this article)

The first example is as always to print "Hello World!"
There are two ways of printing "Hello World!" as shown above. In both the cases, the exit status is 0 as the printing is successful.

Let's check the true and false variables.

As you can see, false returns 1.

Another example using conditionals.

We know that true returns 0. When it is used along with if condition, that condition becomes true and it prints the message in the if part.
When false is used in if condition, the condition becomes false and the execution goes in else part.
Notice that "!" is the negation sign and ! false becomes true.

Finally, as we have stated earlier, the non-zero values are considered as failure. This can be used to categorize different types of failures. Application developers can customize the exit status codes as per their application requirements. For example, a three step failure notification could have the following exit status assignment.
1: Info
2: Warning
3: Error
In the above example, observe that we are initially in bash shell. We spawn a Bourne shell (sh). Exit that shell with a status code of 3 to come back to the original bash shell. We check the status of the previous command and observe that the sh command i.e. the last process created by the bash shell has exited with status code 3 meaning there is error.

Now let me resolve that error :p









Comments

Popular posts from this blog

The Changing Nature of Reality Shows in India

It's been almost two decades since the modern day reality shows started in India. And the nature of these reality shows has changed drastically during this time. "Kaun Banega Crorepati (KBC)" is no longer a show just about knowledge, "Indian Idol" and "Sa Re Ga Ma Pa" are no longer just singing shows. They all have become entertainment shows. This post is an attempt to find out the reasons of this transition, analyze the current nature of these shows and assess their impact. Reasons of this change Competition from TV Serials / Soap Opera TV serials or Soap Opera as it is commonly known is very popular among the Indian masses. India being a country where family ties are very strong, for a long time, the main theme in most popular TV shows has been "family drama". Additionally, there is no dearth of TV channels, actors, producers and the crew. TV show and film production is a major employment generator in India. And so the episodes of serials a...

Local domain name resolution using /etc/hosts

The /etc/hosts file is a powerful mechanism for managing the information about hosts in the local network in the absence of a local DNS server. Setup We have 4 VMs in the local /24 network. The following are the details: vm-1-ubuntu-16-04 - 10.0.1.11 vm-2-ubuntu-16-04 - 10.0.1.12 vm-1-ubuntu-18-04 - 10.0.1.21 vm-2-ubuntu-18-04 - 10.0.1.22 The VMs are reachable via their IP address but not by their hostnames. This is problematic because we have to remember their IP addresses everytime we want to access these hosts. It is would be much simpler to remember and access the servers by their hostnames. For that we need some sort of mapping between the IP addresses and their corresponding host names. There are 3 common ways of achieving this mapping. Setup a DNS server which handles resolution for your local network. Use an existing DNS server of the local Internet Service Provider (ISP) or any other higher level ISP. Note that a public static IP address is required for this s...

Manage system hostname with hostnamectl

This article explains the simplest method to set hostname and Fully Qualified Domain Name (FQDN/fqdn) of any given system using hostnamectl Check that hostnamectl is present on the system by typing it in a shell. You will see output similar to the one given below. In case hostnamectl is not found, it is a good idea to install it. sudo apt update sudo apt install systemd-services Verify the static hostname given above using the following command: Also verify it by checking /etc/hostname file Change the hostname and set the desired hostname by running the following command and authenticating with the password. hostnamectl set-hostname <hostname> Start a new shell session or reconnect to the server to see the change in the hostname Again run above steps to verify that hostname has been changed correctly. Configure FQDN While the above process may suffice to identify the host in the local network, it is not enough when the host is to be identifi...