O'Reilly logo

Essential System Administration, 3rd Edition by Æleen Frisch

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Getting Input: The read Command

The read command reads one line from standard input and assigns the next word in the line to each successive variable specified as its arguments; extra words are assigned to its final argument. For example, these commands:

cat file.dat | \
while read x y z 
do 
   echo $x $y $z
done

produce output like this:

a b c 
d e f 
...

read can be used either for reading sequentially through a file (as in the earlier example with while) or for getting runtime input from the user. Here is an example using read for command input:

echo "fsck all disks? [y] \c" 
read ans < /dev/console

The bash select command

bash provides the select command for prompting the user to select an item from a menu, as in this example:

$ cat choose.bash
#!/bin/bash
  
PS3="Choose an operating system: "
select os in "aix" "hp-ux" "solaris" "tru64" "linux" "freebsd"
do                                Loop until a valid choice is entered.
  if [ $os ]; then
    echo You chose $os which was choice number $REPLY
    break
  else
    echo -e "\nInvalid choice -- try again.\n"
  fi
done
$ choose.bash
1) aix
2) hp-ux
3) solaris
4) tru64
5) linux
6) freebsd
Choose an operating system: 2
You chose hp-ux which was choice number 2

This code fragment also illustrates the bash echo command’s -e option, which allows you to include backslash escape sequences such as \n.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required