shell流程控制语句 if while for case

linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法。
 
一、shell条件语句(if用法)
if语句结构[if/then/elif/else/fi]
 
if 条件测试语句
then
action
[elif 条件
action
else
action
]
fi
 
如果对于:条件测试语句不是很清楚,可以参考:linux shell 逻辑运算符、逻辑表达式详解
shell命令,可以按照分号分割,也可以按照换行符分割。如果想一行写入多个命令,可以通过“‘;”分割。
如:
[[email protected] test]# a=5;if [[ a -gt 4 ]] ;then echo ‘ok‘;fi;                       
ok
 
实例:(test.sh)
#!/bin/sh
scores=40;
if [[ $scores -gt 90 ]]; then
    echo "very good!";
elif [[ $scores -gt 80 ]]; then
    echo "good!";
elif [[ $scores -gt 60 ]]; then
    echo "pass!";
else
    echo "no pass!";
fi;

条件测试有:[[]],[],test 这几种,注意:[[]] 与变量之间用空格分开。
 
二、循环语句(for,while,until用法):
• for循环使用方法(for/do/done)
语法结构:
 1.for … in 语句
for 变量 in seq字符串
do
action
done
说明:seq字符串 只要用空格字符分割,每次for…in 读取时候,就会按顺序将读到值,给前面的变量。
实例(testfor.sh):
#!/bin/sh
for i in $(seq 10); do
    echo $i;
done;
2.for((赋值;条件;运算语句))
for((赋值;条件;运算语句))
do
action
done;
实例(testfor2.sh):
#!/bin/sh
for((i=1;i<=10;i++));do
    echo $i;
done;
• while循环使用(while/do/done)
while语句结构
while 条件语句
do
action
done;
实例1:
#!/bin/sh
i=10;
while [[ $i -gt 5 ]];do
    echo $i;
    ((i--));
done;
实例2:(循环读取文件内容:)
#!/bin/sh
while read line;do
    echo $line;
done < /etc/hosts;
 until循环语句
语法结构:
until 条件
do
action
done
意思是:直到满足条件,就退出。否则执行action.
实例(testuntil.sh):
#!/bin/sh
a=10;
until [[ $a -lt 0 ]];do
echo $a;
((a—));
done;
结果:
三、shell选择语句(case、select用法)
• case选择语句使用(case/esac)
语法结构
case $arg in 
    pattern | sample) # arg in pattern or sample 
    ;; 
    pattern1) # arg in pattern1 
    ;; 
    *) #default 
    ;; 
esac 
说明:pattern1 是正则表达式,可以用下面字符:
                 *       任意字串
                 ?       任意字元
                 [abc]   a, b, 或c三字元其中之一
                 [a-n]   从a到n的任一字元
                 |       多重选择
 
实例:
#!/bin/sh 
case $1 in
start | begin)
    echo "start something" 
    ;;
stop | end)
    echo "stop something" 
    ;;
*)
    echo "Ignorant" 
    ;;
esac
运行结果:======================
 
testcase.sh start
start something
• select语句使用方法(产生菜单选择)
语法:
select 变量name  in seq变量
do
    action
done
实例:
#!/bin/sh 
select ch in "begin" "end" "exit"
do
case $ch in
"begin")
    echo "start something" 
    ;;
"end")
    echo "stop something" 
    ;;
"exit")
    echo "exit" 
    break;
    ;;
*)
    echo "Ignorant" 
    ;;
esac
done;
运行结果:
说明:select是循环选择,一般与case语句使用。
 
以上是shell的流程控制语句,条件,循环,选择。

时间: 2024-10-11 00:06:57

shell流程控制语句 if while for case的相关文章

shell流程控制语句 case

linux的shell前前后后学了好几遍了奈何记性不好,总是忘了,追主要的原因可能是不常用的原因吧!case开头 esac结尾下面是结果输入法不对 输入的符号就不对,刚开始总错,后来切换了输入法就好了readread命令从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合.该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开.在read命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量REPLY -p:指定读取值时的提示符:-t:指定读取值时等待的时间(秒)

Shell流程控制语句for

for语法格式: for 变量 in 参数列表 do 命令 done 或者 for 变量 in 参数列表 ; do 命令 done for语句流程控制图: 实例: [[email protected] ~]# vim a.sh #!/bin/bash for var in a1 a2 b1 b2 do echo $var done [[email protected] ~]# sh a.sh a1 a2 b1 b2 参数列表可以更复杂些,部分特殊符号需要转义 [[email protected]

Shell流程控制语句while

while语法格式: while 判断条件 do 命令 done while语句流程控制图: 实例: [[email protected] ~]# vim a.sh #!/bin/bash i=0 while [ $i -lt 10 ] #如果小于10,则执行循环 do echo $i i=$[i+1] done [[email protected] ~]# sh a.sh 0 1 2 3 4 5 6 7 8 9 一样可以使用双小括号(())来替换原有的判断条件,如下: [[email prot

shell 流程控制语句

一.if 语法格式:if test -d $arg then ... else ... fi 变量测试语句可以用 [ ] 简化.例:test -d $arg 等价于 [ -d $arg ].( 注意:"空格"["空格"-d $1"空格"] ) 更多测试命令请看:http://www.cnblogs.com/fangwu/p/8422910.html 1.示例脚本代码 #!/bin/sh if [ -d $arg ] then echo "

Shell流程控制语句if

(1).if语句 语法格式: if 判断条件 ; then 命令 fi 或 if 判断条件 then 命令 fi if语句流程图: 实例:判断命令是否执行成功,成功则输出语句This is ok. [[email protected] ~]# vim a.sh #!/bin/bash ls /mnt > /dev/null if [ $? -eq 0 ] ; then echo "This is ok." fi [[email protected] ~]# sh a.sh Thi

MS SQL 流程控制语句

Declare   myCursor   cursor   For     Select   *   from   table1 open   myCursor         Fetch   next   From   myCursor   into   @变量     While   @@FETCH_STATUS   =0     begin           --处理单条记录           Fetch   next   From   myCursor     end Close  

MYSQL进阶学习笔记三:MySQL流程控制语句!(视频序号:进阶_7-10)

知识点四:MySQL流程控制语句(7-10) 选择语句: (IF ELSE ELSE IF CASE 分支)IFNULL函数 IF语法: 语法规则: IF search_condition THEN statmen_list ; [SLSEIF search_condition THEN statmen_list]; ELSE statmen_list; END IF; 1 --7 流程控制语句之选择语句 2 DELIMITER // 3 CREATE PROCEDURE p_test7(IN

case流程控制语句

case流程控制语句在linux中有其独到的一面,使得在编程过程中能够在脚本编写的过程中具备多个选项功能,使其功能多样化,其具备简单,快速的特点. 一.case流程语句结构图 根据流程图可以知道,在所给出的条件中,首先将"变量值"与模式1进行比较,若取值相同 则执行模式1后的命令序列,直到遇见双分号"::"后跳转至esac,表示分支结束:若与模式1不相匹配,则继续与模式2 进行比较,若取值相同则执行模式2 后的命令序列,直到遇见双分号"::"后跳

shell脚本中if流程控制语句的应用

上篇关于测试语句的使用规则及相关使用方法,如果仅仅孤立使用时很难有其用武之地,当然在shell脚本中其实不可能孤立存在的,只有与条件语句和控制语句等搭配使用才能使其功能得到最大限度的体现,因此在日常使用中,其功能不容小觑. 一.控制流程 if控制流程可分为但分支if语句和多分支if语句,其使用语和C语言中有很多相似之处,具体用法如下文所述. 1.1但分支if语句结构: 1.2基本语法     if 条件        或    if 条件:then   //分号表示两个命令写在一行并不相互影响,