案件
In 打坏, 多项选择复合命令称为 案件. 它具有以下语法:
案件 字 in
[模式 [| 模式]...) 命令 ;;]...
ESAC
如果我们看一下 阅读菜单 在第 28 章的程序中,我们看到了用于对用户的选择进行操作的逻辑:
#!/斌/庆典
# read-menu:一个菜单驱动的系统信息程序清除
回声"
请选择:
1. 显示系统信息
2. 显示磁盘空间
3. 展示家居空间利用率
0. 退出”
read -p "输入选择 [0-3] > "
如果 [[ $REPLY =~ ^[0-3]$ ]]; 然后如果 [[ $REPLY == 0 ]]; 然后
#!/斌/庆典
# read-menu:一个菜单驱动的系统信息程序清除
回声"
请选择:
1. 显示系统信息
2. 显示磁盘空间
3. 展示家居空间利用率
0. 退出”
read -p "输入选择 [0-3] > "
如果 [[ $REPLY =~ ^[0-3]$ ]]; 然后如果 [[ $REPLY == 0 ]]; 然后
echo "程序终止。" 出口
fi
如果 [[ $REPLY == 1 ]]; 然后回显“主机名:$HOSTNAME”正常运行时间
出口
fi
如果 [[ $REPLY == 2 ]]; 然后 df -h
出口
fi
如果 [[ $REPLY == 3 ]]; 然后
如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
出口
其他
echo "无效输入。" >&2 退出1
fi
echo "程序终止。" 出口
fi
如果 [[ $REPLY == 1 ]]; 然后回显“主机名:$HOSTNAME”正常运行时间
出口
fi
如果 [[ $REPLY == 2 ]]; 然后 df -h
出口
fi
如果 [[ $REPLY == 3 ]]; 然后
如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
出口
其他
echo "无效输入。" >&2 退出1
fi
运用 案件,我们可以用更简单的东西替换这个逻辑:
#!/斌/庆典
# case-menu:一个菜单驱动的系统信息程序清除
回声"
请选择:
1. 显示系统信息
2. 显示磁盘空间
3. 展示家居空间利用率
0. 退出”
read -p "输入选择 [0-3] > "
案例 $REPLY 在
0) 回声“程序终止。” 出口
;;
#!/斌/庆典
# case-menu:一个菜单驱动的系统信息程序清除
回声"
请选择:
1. 显示系统信息
2. 显示磁盘空间
3. 展示家居空间利用率
0. 退出”
read -p "输入选择 [0-3] > "
案例 $REPLY 在
0) 回声“程序终止。” 出口
;;
1) 回显“主机名:$HOSTNAME”正常运行时间
;;
2) df-h
;;
3) 如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
fi
;;
*) echo "Invalid entry" >&2 exit 1
;;
ESAC
1) 回显“主机名:$HOSTNAME”正常运行时间
;;
2) df-h
;;
3) 如果 [[ $(id -u) -eq 0 ]]; 然后
echo "家庭空间利用率(所有用户)" du -sh /home/*
其他
echo "家庭空间利用率 ($USER)" du -sh $HOME
fi
;;
*) echo "Invalid entry" >&2 exit 1
;;
ESAC
这个 案件 命令查看的值 字,在我们的例子中, 回复 变量,然后尝试将其与指定的其中之一进行匹配 模式. 当找到匹配项时, 命令 与指定模式相关联的执行。 找到匹配项后,不再尝试进一步匹配。