bash的多选复合命令称为case。它的语法规则如下所示:
case word in
[pattern [|pattern]...) commands ;; ]...
esac
用case编写菜单读取shell脚本:
#!/bin/bash
#case-menu:a menu driven system information program
clear;
cat << _EOF_
please select:
a,Display System Information
b,Display Disk space
c,Display Home Space Utilization
q,Quit
_EOF_
read -p "Enter selection [a-c |q] >"
case $REPLY in
a) echo "Hostname:$HOSTNAME"
uptime
;;
b) df -h
;;
c) if [[ $(id -u) -eq 0 ]]; then
echo "Host Space Utilization(All Users)"
du -sh /home/*
else
echo "Host Space Utilization($USER)"
du -sh $HOME
fi
;;
q) echo "Program terminated."
exit
;;
esac
case命令检查一个变量值,在这个例子中,就是REPLY变量值,然后试图去匹配其中一个具体的模式。当找到与之相匹配的模式之后,就会执行与该模式相关的命令。若找到一个模式之后,就不会再继续寻找。
模式以一个“)”为终止符。下面是一些模式。
模式 | 描述 |
---|---|
a) | 若单词为”a”,则匹配 |
???) | 若单词只有三个字符,则匹配 |
*.txt | 若单词以”.txt”字符结尾,则匹配 |
*) | 匹配任意单词。把这个模式做为case命令的最后一个模式,是一个很好的做法,可以捕捉到任意一个与先前模式不匹配的数值;也就是说捕捉到任何可能的无效值 |
在markdown中生产表格的语法:
|模式|描述|
|-----|-----|
|a)|若单词为"a",则匹配|