Echo Command

From Linux Shell Scripting Tutorial - A Beginner's handbook
Revision as of 22:49, 29 March 2016 by Admin (talk | contribs) (Text replacement - "<source lang="bash">" to "<syntaxhighlight lang="bash" >")
Jump to navigation Jump to search

← Rules for Naming variable nameHomeQuoting →

To display the value of a variable, either use echo or printf command as follows: <syntaxhighlight lang="bash" >echo $varName # not advisable unless you know what the variable contains</source> OR (see quoting): <syntaxhighlight lang="bash" >echo "$varName"</source> OR <syntaxhighlight lang="bash" >printf "%s\n" "$varName"</source>

Generating Output With echo command

Use echo command to display a line of text or a variable value. It offers no formatting option. It is a good command to display a simple output when you know that the variable's contents will not cause problems. For most uses, printf is preferable.

echo Command Examples

<syntaxhighlight lang="bash" >#!/bin/bash

  1. Display welcome message, computer name and date

echo "*** Backup Shell Script ***" echo echo "*** Run time: $(date) @ $(hostname)" echo

  1. Define variables

BACKUP="/nas05" NOW=$(date +"%d-%m-%Y")

  1. Let us start backup

echo "*** Dumping MySQL Database to $BACKUP/$NOW..."

  1. Just sleep for 3 secs

sleep 3

  1. And we are done...

echo echo "*** Backup wrote to $BACKUP/$NOW/latest.tar.gz" </source>

Printing file names with echo

You can also print the file names using wildcards and echo command: <syntaxhighlight lang="bash" >cd /etc echo *.conf</source> Sample outputs:

aatv.conf adduser.conf apg.conf argus.conf atool.conf brltty.conf ca-certificates.conf 
chkrootkit.conf cowpoke.conf cvs-cron.conf cvs-pserver.conf dconf.conf dconf-custom.conf 
debconf.conf deluser.conf 
wodim.conf wpa_supplicant.conf wvdial.conf xorg.conf

Generating Output With printf command

printf command format and display data on screen. However, printf does not provide a new line. You need to provide format string using % directives and escapes to format numeric and string arguments in a way that is mostly similar to the C printf() function. Use printf to generate formatted output.

printf Format Directives

From the printf man page:

  FORMAT controls the output as in C printf.  Interpreted sequences are:

       \"     double quote

       \NNN   character with octal value NNN (1 to 3 digits)

       \\     backslash

       \a     alert (BEL)

       \b     backspace

       \c     produce no further output

       \f     form feed

       \n     new line

       \r     carriage return

       \t     horizontal tab

       \v     vertical tab

       \xHH   byte with hexadecimal value HH (1 to 2 digits)

       \uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)

              Unicode character with hex value HHHHHHHH (8 digits)

       %%     a single %

       %b     ARGUMENT as a string with '\' escapes interpreted, except that octal escapes are of the form 
              \0 or \0NNN and all C format specifications ending with one of diouxXfeEgGcs, 
              with ARGUMENTs converted to proper type first. Variable widths are handled.

Format control string syntax is as follows: <syntaxhighlight lang="bash" >printf "%w.pL\n" $varName</source> Where,

  • w - Minimum field width.
  • p - Display number of digits after the decimal point (precision).
  • L - a conversion character. It can be:
    • s - String
    • d - Integer
    • e - Exponential
    • f - Floating point

printf Command Examples

Type the following at a shell prompt: <syntaxhighlight lang="bash" >vech="Car" printf "%s\n" $vech printf "%1s\n" $vech printf "%1.1s\n" $vech printf "%1.2s\n" $vech printf "%1.3s\n" $vech printf "%10.3s\n" $vech printf "%10.1s\n" $vech no=10 printf "%d\n" $no big=5355765 printf "%e\n" $big printf "%5.2e\n" $big sales=54245.22 printf "%f\n" $sales printf "%.2f\n" $sales</source> ← Rules for Naming variable nameHomeQuoting →