shell的if"/>
shell的if
if-else笔记
- 简单if结构
- if/else结构
- if/elif/else 结构
- if/else使用注意事项
if判断是shell编程中使用频率最高的语法结构
简单if结构
最简单的if执行结构如下所示:if expression #expression 表示测试条件
thencommand #满足expression后要执行的命令command...
f1
使用这种简单 if 结构时,要特别注意测试条件后如果没有:,则 then 语句要换行,否则会产生不必要的错误。如果 f和 then 处于同一行,则必须用;。
脚本1
#!/bin/bash
##filename:youok.sh
echo "Are you ok?"
read answer
if [[ $answer == [Yy]* || $answer == [Mm]aybe ]] #没有";",then需要换行
then
echo "Glad to hear it."
fi
if 的条件判断部分使用了扩展的 test 语[[·]],[[]]中可以使用正则表达式进行条件匹配,脚本功能是读取输入内容
这个脚本提供了一个基本的用户互动,并根据他们的输入做出不同的回应。如果用户输入以 ‘Y’ 或 ‘y’ 开头,或者是 “maybe”,它将做出积极的回应。
[root@localhost tmp]# sh youok.sh
Are you ok?
Y
Glad to hear it.[root@localhost tmp]# sh youok.sh
Are you ok?
maybe
Glad to hear it.
脚本2
#!/bin/bashecho "你好!你今天心情如何?(请输入 '好' 或 '不好')"
read moodif [[ $mood == [好好]* ]]; thenecho "很高兴听到你心情不错!"
elif [[ $mood == [不不好]* ]]; thenecho "抱歉听到你心情不好,有什么我可以帮助你的吗?"
elseecho "我不太明白你的回答。"
fi
脚本会询问用户今天的心情如何,然后根据用户的回答做出不同的回应
[root@localhost tmp]# sh youok_1.sh
你好!你今天心情如何?(请输入 '好' 或 '不好')
好
很高兴听到你心情不错!
[root@localhost tmp]# sh youok_1.sh
你好!你今天心情如何?(请输入 '好' 或 '不好')
不好
抱歉听到你心情不好,有什么我可以帮助你的吗?
[root@localhost tmp]# sh youok_1.sh
你好!你今天心情如何?(请输入 '好' 或 '不好')
?
我不太明白你的回答。
if/else结构
if/else 结构也是经常使用的,这个结构是双向选择语句,当用户执行脚本时如果不满足if后的表达式,就会执行 else 后的命令,所以有很好的交五性。其结构为:
if expression1 #expression1表示测试条件
thencommand #满足#expression1条件,则执行下面这些命令..mand
elsecommand ##不满足#expression1条件,则执行下面这些命令..mand
fi
#!/bin/bash
if [$# -eq 1] #满足$# -eq 1会执行if-else嵌套语句,$#代表输入参数个数thenif who | grep ^$1>/dev/null #判断then echo "$1 is active."else echo "$1 is not active."fielseecho "Usage:$0<username>"exit
fi
if/elif/else 结构
if/elif/else 结构用于更复杂的判断,它针对多个条件执行不同操作,语法结构如下:
if expr1 ##如果expr1条件成立(返回值为0)
then #那么commands1 #执行语句块commands1
elif expr2 ##若expr1条件不成立,而expr2条件成立
then #那么commands2 #执行语句块commands2
...... #可以有多个elif语句,依次执行
else #else 最多只能有一个commands4 #执行语句块commands4
fi #if语句必须以单词 fi终止
#!/bin/bash
##filename:askage.sh
read -p "How old are you?" age #通过read读取键盘输入,输入值赋值给age#使用shell算术运算符(())进行条件测试
if ((age < 0 || age > 120));then #判断age范围,小于0或大于120,给超出范围提示echo "OUT of range!"exit 1
fi#使用多分支语句
if ((age>=0&&age<13));thenecho "child"
elif ((age>=13&&age<20));thenecho "callan"
elif ((age>=20&&age<30));thenecho "PIII"
elif ((age>=30&&age<40));thenecho "PIV"
elseecho "sorry i asked"
fi
if/else使用注意事项
1.if语句必须以if开头,以fi结束。
2.elif可以有任意多个(0个或多个)。
3.else 最多只能有一个(0个或1个)。
4mands为可执行语句块,如果为空,需使用shell提供的空命令:,即冒号。该命令不做任何事情,只返回一个退出状态0。
5.expr 通常为条件测试表达式;也可以是多个命令,以最后一个命令的退出状态为条件值。
6.if语句可以嵌套使用。
更多推荐
shell的if
发布评论