Difference between revisions of "Echo Command"

From Linux Shell Scripting Tutorial - A Beginner's handbook
Jump to navigation Jump to search
Line 28: Line 28:
 
echo "*** Backup wrote to $BACKUP/$NOW/latest.tar.gz"
 
echo "*** Backup wrote to $BACKUP/$NOW/latest.tar.gz"
 
</source>
 
</source>
 +
===Printing file names with echo===
 +
You can also print the file names using [[wildcards]] and echo command:
 +
<source lang="bash">cd /etc
 +
echo *.conf</source>
 +
Sample outputs:
 +
<pre>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 devscripts.conf discover.conf dnsmasq.conf dnsproxy.conf e2fsck.conf fdmount.conf ffserver.conf fuse.conf gai.conf gssapi_mech.conf hdparm.conf hesiod.conf host.conf idmapd.conf inetd.conf kernel-img.conf kernel-pkg.conf krb5.conf ld.so.conf lftp.conf libao.conf logrotate.conf ltrace.conf mke2fs.conf mplayerplug-in.conf mtools.conf multitail.conf netscsid.conf nscd.conf nsswitch.conf ntp.conf pam.conf pnm2ppa.conf popularity-contest.conf ra.conf resolv.conf rsnapshot.conf rssh.conf scrollkeeper.conf sensors3.conf sensors.conf smartd.conf sysctl.conf syslog.conf ts.conf ucf.conf uniconf.conf updatedb.conf usplash.conf vnc.conf vsftpd.conf wodim.conf wpa_supplicant.conf wvdial.conf xorg.conf
 +
</pre>
 
==Generating Output With printf command==
 
==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 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.  

Revision as of 12:16, 12 September 2009

To display the value of a variable either use echo or printf command as follows:

echo $varName

OR

printf "%s\n" $varName

Generating Output With echo command

Use echo command to display a line of text or variable value. It offer no formatting option. It is good command to display simple output.

echo Command Examples

#!/bin/bash
# Display welcome message, computer name and date
echo "*** Backup Shell Script ***"
echo
echo "*** Run time: $(date) @ $(hostname)"
echo

# Define variables
BACKUP="/nas05"
NOW=$(date +"%d-%m-%Y")
 
# Let us start backup
echo "*** Dumping MySQL Database to $BACKUP/$NOW..."

# Just sleep for 3 secs
sleep 3

# And we are done...
echo
echo "*** Backup wrote to $BACKUP/$NOW/latest.tar.gz"

Printing file names with echo

You can also print the file names using wildcards and echo command:

cd /etc 
echo *.conf

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 devscripts.conf discover.conf dnsmasq.conf dnsproxy.conf e2fsck.conf fdmount.conf ffserver.conf fuse.conf gai.conf gssapi_mech.conf hdparm.conf hesiod.conf host.conf idmapd.conf inetd.conf kernel-img.conf kernel-pkg.conf krb5.conf ld.so.conf lftp.conf libao.conf logrotate.conf ltrace.conf mke2fs.conf mplayerplug-in.conf mtools.conf multitail.conf netscsid.conf nscd.conf nsswitch.conf ntp.conf pam.conf pnm2ppa.conf popularity-contest.conf ra.conf resolv.conf rsnapshot.conf rssh.conf scrollkeeper.conf sensors3.conf sensors.conf smartd.conf sysctl.conf syslog.conf ts.conf ucf.conf uniconf.conf updatedb.conf usplash.conf vnc.conf vsftpd.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)

       \UHHHHHHHH
              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:

printf "%w.pL\n" $varName

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:

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=5355765613
printf "%e\n" $no
printf "%5.2e\n" $no