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
A.4.1 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.