赞
踩
case 变量名 in
值1)
指令1
;;
值2)
指令2
;;
值3)
指令3
;;
*)
默认
esac
ANSI转义序列是一种特殊的字符序列,用于在终端中进行文本样式和颜色的控制。这些序列以\e[开头,并以字母和分号组成。最常见的用途是在终端中设置文本颜色、背景颜色、文本样式(如粗体、斜体等)以及移动光标的位置。下面是一些常用的ANSI转义序列示例:
\e[30m
:黑色\e[31m
:红色\e[32m
:绿色\e[33m
:黄色\e[34m
:蓝色\e[35m
:洋红色\e[36m
:青色\e[37m
:白色\e[40m
:黑色背景\e[41m
:红色背景\e[42m
:绿色背景\e[43m
:黄色背景\e[44m
:蓝色背景\e[45m
:洋红色背景\e[46m
:青色背景\e[47m
:白色背景\e[1m
:粗体\e[2m
:淡色(可能被忽略)\e[3m
:斜体\e[4m
:下划线\e[5m
:闪烁\e[7m
:反显(颠倒前景色和背景色)\e[8m
:隐藏(不可见)\e[0m
通过将这些ANSI转义序列插入到输出的字符串中,可以实现在终端中动态更改文本样式和颜色。请注意,ANSI转义序列在不同的终端程序和操作系统中可能会有差异,所以在编写脚本时请考虑跨平台兼容性。
1:执行shell脚本,打印一个如下的水果菜单:
1.apple
2.pear
3.banana
4.cherry 当用户输入对应的数字选择水果的时候,告诉他选择的水果是什么,并给水果单词加上一种颜色(随意),要求用case语句实现。
#!/bin/bash # 随机颜色数组 COLORS=("31" "32" "33" "34" "35" "36") # 对应字体颜色的ANSI码 BG_COLORS=("41" "42" "43" "44" "45" "46") # 对应背景颜色的ANSI码 while true; do # 打印水果菜单 echo "1. apple" echo "2. pear" echo "3. banana" echo "4. cherry" echo "0. 退出" # 读取用户输入 read -p "请选择一个水果(输入对应的数字,输入0退出):" choice # 检查用户选择 case $choice in 1) echo -e "您选择的水果是:\e[${BG_COLORS[$(($RANDOM % ${#BG_COLORS[@]}))]}m\e[${COLORS[$(($RANDOM % ${#COLORS[@]}))]}m apple\e[0m" ;; 2) echo -e "您选择的水果是:\e[${BG_COLORS[$(($RANDOM % ${#BG_COLORS[@]}))]}m\e[${COLORS[$(($RANDOM % ${#COLORS[@]}))]}m pear\e[0m" ;; 3) echo -e "您选择的水果是:\e[${BG_COLORS[$(($RANDOM % ${#BG_COLORS[@]}))]}m\e[${COLORS[$(($RANDOM % ${#COLORS[@]}))]}m banana\e[0m" ;; 4) echo -e "您选择的水果是:\e[${BG_COLORS[$(($RANDOM % ${#BG_COLORS[@]}))]}m\e[${COLORS[$(($RANDOM % ${#COLORS[@]}))]}m cherry\e[0m" ;; 0) echo "退出程序" break ;; *) echo "无效的选择" ;; esac done
#第一种语法:
if <条件表达式>
then
指令
fi
#第二种语法:
if <条件表达式>;then
指令
fi
#语法:
if <条件表达式>
then
指令序列1
else
指令序列2
fi
#语法:
if 条件表达式1
then
命令序列1
elif 条件表达式2
then
命令序列2
elif 条件表达式3
then
命令序列3
else
命令序列n
fi
在上面的语法中,当整个if
elif语句结构中的第1个条件表达式为真,则执行第1个then子句中的语句statement1;否则,继续下面的判断。如果条件表达式2的值为真,则执行第2个then子句中的语句,以此类推。如果所有的条件表达式的值都为假,则执行最后的else子句中的语句。最后是if
elif结构的结束标志fi。
if嵌套:输入两个整数比较大小
#!/bin/bash # 读取两个整数 read -p "请输入第一个整数:" num1 read -p "请输入第二个整数:" num2 # 验证输入是否为整数 re='^[0-9]+$' # 整数的正则表达式 if ! [[ $num1 =~ $re ]]; then echo "第一个输入不是整数" exit 1 fi if ! [[ $num2 =~ $re ]]; then echo "第二个输入不是整数" exit 1 fi # 比较两个整数的大小 if [ "$num1" -eq "$num2" ]; then echo "两个整数相等" elif [ "$num1" -gt "$num2" ]; then echo "$num1 大于 $num2" else echo "$num1 小于 $num2" fi
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。