home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


case

case value in
    pattern1 ) cmds1 ;;
    pattern2 ) cmds2 ;;
    .
    .
    .
esac

Execute the first set of commands (cmds1 ) if value matches pattern1 , execute the second set of commands (cmds2 ) if value matches pattern2 , etc. Be sure the last command in each set ends with ;; . value is typically a positional parameter or other shell variable. cmds are typically Unix commands, shell programming commands, or variable assignments. Patterns can use file-generation metacharacters. Multiple patterns (separated by | ) can be specified on the same line; in this case, the associated cmds are executed whenever value matches any of these patterns. See the Examples here and under eval .

Korn Shell Notes

  • The Korn shell allows pattern to be preceded by an optional open parenthesis, as in ( pattern ) . It's useful for balancing parentheses inside a $( ) construct.

  • The Korn shell also allows a case to end with ;& instead of ;; . In such cases control "falls through" to the group of statements for the next pattern .

Examples

Check first command-line argument and take appropriate action:

case $1 in     # Match the first arg
    no|yes) response=1;;
    -[tT])  table=TRUE;;
    *)      echo "unknown option"; exit 1;;
esac

Read user-supplied lines until user exits:

while :        # Null command; always true
do
   echo "Type . to finish ==> \c"
   read line
   case "$line" in
      .) echo "Message done"
         break ;;
      *) echo "$line" >> $message ;;
   esac
done


Previous: Reference: builtin UNIX in a Nutshell: System V Edition Next: Reference: cd
Reference: builtin Book Index Reference: cd

The UNIX CD Bookshelf NavigationThe UNIX CD BookshelfUNIX Power ToolsUNIX in a NutshellLearning the vi Editorsed & awkLearning the Korn ShellLearning the UNIX Operating System