Bash Script That Prints A Number With Two Decimal Places

Another task that I had to tackle as part of the lessons on shell expansion in my ongoing ALX Software Engineering course was to write a bash script that prints a number with two decimal places.
Let's take a practical example and solve it to explain how to print a number with two decimal places.
Practical Example:
Write a script that prints a number with two decimal places, followed by a new line.
The number will be stored in the environment variable MYNUM
Up until this point, we had always relied on the echo command to display or print somethings to the screen. As such, upon reading this question, my intuition defaulted to using the echo command to perform the task.
Unfortunately, I learned too soon that the echo command prints out only whole numbers and doesn't print floats by default. This means that we need to rely on something else to help us print floats or decimal numbers to the screen.
The printf command is the saviour of the situation. This is a popular command in programming languages like C but the bash shell equally utilizes it for the same purpose.
Printf is able to let us determine the format of the output we want. Hence, in this case the printf command will help us to format the output to be in 2 decimal places.
How to format output with the printf command
Let's look at the normal synthax of the printf command.
printf options arguments
It may also be presented as
printf options [format specifiers] arguments
The format specifiers are what tells the printf command what the format of the output should be. They also point to the arguments and restricts the type or format of values the printf command takes in as arguments.
Examples of format specifiers that you are likely to use include
| Format specifier | Description |
|---|---|
| %d | decimal (integer) number (base 10) |
| %f | floating-point number |
| %i | integer number (base 10) |
| %o | octal number (base 8) |
| %x | hexadecimal number (base 16) |
About the author
- Heya! 👋 I love helping people, and one of the best ways I do this is by sharing what I learn and build. I started as a pharmacist at a tertiary hospital in Northern Ghana, where I saw how much technology could improve healthcare. That sparked my interest in digital health. I taught myself to code, then joined the ALX Software Engineering program, which became a turning point. I went on to complete a Master of Health Informatics at the University of Toronto. Today I am a software and AI engineer and a health informatician, and I practise remotely as a Digital Health Pharmacist. I combine clinical experience with technical skills to build tools that solve real problems in health and beyond, and I write here about what I build and what I learn.
Comments
Join the discussionif only my medical school courses were explained this way maybe i wouldnt have changed career paths Thank you Dr for explaining
Thank you very much for this great explanation.
Clear, concise, and shared in a manner to facilitate learning. Good job, Obed.
I just wanted to say that i really appreciate you for your work. You aren't just giving off answers or solutions to these problems, you give a very intuitive description of what the problem is asking and actually build up from that while explaining how you got to the final solution. I also appreciate how you go ahead to describe each and every command you use, which really makes it easier for a beginner/learner like me understand firmly actually what is happening. I sometime find myself reading through some articles that barely explain the code written or rather use very DIFFICULT to understand technical terms which really put me off and effectively discourage me from even trying to learn the concept. I, again, really appreciate your method. I have looked through some of your other have been able to learn quite a lot from you. I am glad people like you exist.
By the way, I am also doing the ALX Software Engineering program😅. It really inspires me to see how much you already know and are able to share. I want to do the very same, i will work towards that. Thank you again Dr. Ehoneah Obed
Thank you for your kind ways and I am always happy to help. All the best


