linux shell流程控制语句实例讲解(if、for、while、case语句实例)_linux shell

一、shell条件语句(if用法)

if语句结构[if/then/elif/else/fi]

复制代码 代码如下:

if 条件测试语句

then

action

[elif 条件

action

else

action

]

fi

如果对于:条件测试语句不是很清楚,可以参考:linux shell 逻辑运算符、逻辑表达式详解
shell命令,可以按照分号分割,也可以按照换行符分割。如果想一行写入多个命令,可以通过“';”分割。
如:

复制代码 代码如下:

[chengmo@centos5 ~]$ 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用法):

1.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;


seq 10 产生 1 2 3 。。。。10空格分隔字符串。

2.for((赋值;条件;运算语句))

复制代码 代码如下:

for((赋值;条件;运算语句))

do

action

done;

实例(testfor2.sh):

复制代码 代码如下:

#!/bin/sh

for((i=1;i<=10;i++));do
    echo $i;
done;

3.while循环使用(while/do/done)

while语句结构

复制代码 代码如下:

while 条件语句

do

action

done;

实例1:

复制代码 代码如下:

#!/bin/sh
i=10;
while [[ $i -gt 5 ]];do
    echo $i;
    ((i--));
done;

运行结果:========================

复制代码 代码如下:

sh testwhile1.sh
10
9
8
7
6

实例2:(循环读取文件内容:)

复制代码 代码如下:

#!/bin/sh

while read line;do
    echo $line;
done < /etc/hosts;

 

运行结果:===================

复制代码 代码如下:

sh testwhile2.sh

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 centos5 localhost.localdomain localhost

4.until循环语句

语法结构:

复制代码 代码如下:

until 条件

do

action

done

意思是:直到满足条件,就退出。否则执行action.

实例(testuntil.sh):

复制代码 代码如下:

#!/bin/sh

a=10;

until [[ $a -lt 0 ]];do

echo $a;

((a—));

done;

运行结果:

sh testuntil.sh

复制代码 代码如下:

10
9
8
7
6
5
4
3
2
1
0

三、shell选择语句(case、select用法)

1.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

2.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语句使用。

时间: 2024-09-14 01:08:58

linux shell流程控制语句实例讲解(if、for、while、case语句实例)_linux shell的相关文章

Swift编程中的switch...case语句实例解析_Swift

Swift中的switch...case语句可以判断对象类型, Objective-C中则必须是整数. 不可以穿透,可以不写break, var rank = "A" switch rank{ case "A": //相当于if print("优") case "B": // 相当于else if print("优") case "C": // 相当于else if print(&quo

linux中流程控制语句if if else case

流程控制语句:     if语句格式如下:     #if语句的后面是Shell命令,如果该命令执行成功返回0,则执行then后面的命令.     代码如下 复制代码   if command            then         command         command     fi     #用test命令测试其后面expression的结果,如果为真,则执行then后面的命令.     代码如下 复制代码   if test expression     then     

JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)

Java流程控制语句 本博文将对JAVA中组成各种结构的控制语句进行重点介绍,主要内容是区别于C/C++中的流程控制语句的重点解析. 1.顺序语句 顺序结构中的语句可分为:表达式语句.空语句和复合语句三大类. 注: (1).空语句主要用来作为空循环体,其语法格式如下: : //其实就是一个分号 执行一个空语句,就是将控制转到该语句的结束点.这样,如果空语句是可以到达的,则空语句的结束点也是可以到达的. (2).复合语句又称为语句块,若语句块是空的,则控制转到语句块的结束点. 2.if条件语句 J

linux使用管道命令执行ps获取cpu与内存占用率_linux shell

复制代码 代码如下: #include <stdio.h>#include <unistd.h>int main(){    char caStdOutLine[1024]; // ps 命令的标准输出中的一行信息    char* pcTmp = NULL;      // 指向以空格拆分后的字符串     char caSelfPID[10];      // 自身进程的PID字符串    char caPSCmd[24];        // "ps aux | g

linux shell自定义函数(定义、返回值、变量作用域)介绍_linux shell

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带function fun() 定义,也可以直接fun() 定义,不带任何参数. 2.参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值. retu

linux多线程编程详解教程(线程通过信号量实现通信代码)_linux shell

线程分类 线程按照其调度者可以分为用户级线程和核心级线程两种. (1)用户级线程 用户级线程主要解决的是上下文切换的问题,它的调度算法和调度过程全部由用户自行选择决定,在运行时不需要特定的内核支持.在这里,操作系统往往会提供一个用户空间的线程库,该线程库提供了线程的创建.调度.撤销等功能,而内核仍然仅对进程进行管理.如果一个进程中的某一个线程调用了一个阻塞的系统调用,那么该进程包括该进程中的其他所有线程也同时被阻塞.这种用户级线程的主要缺点是在一个进程中的多个线程的调度中无法发挥多处理器的优势.

在Linux下如何修改Mysql的用户(root)的密码_linux shell

下面给大家分享下在Linux下如何修改Mysql的用户(root)的密码,分两种情况:第一种当拥有原来的mysql的root密码,第二种情况忘记原来的mysql的root的密码. 修改的用户都以root为列. 一.拥有原来的mysql的root的密码: 方法一: 在mysql系统外,使用mysqladmin 复制代码 代码如下: # mysqladmin -u root -p password "test123" Enter password: [输入原来的密码] 方法二: 通过登录m

linux shell实现判断输入的数字是否为合理的浮点数_linux shell

这个shell是来判断输入的数字是否为合理的浮点数 实现代码如下: #!/bin/sh # validfloat -- Tests whether a number is a valid floating-point value. # Note that this script cannot accept scientific (1.304e5) notation. # To test whether an entered value is a valid floating-point numb

linux下使用ssh远程执行命令批量导出数据库到本地_linux shell

前天正在跟前端的同事调试功能.服务器开好,模拟的玩家登录好,就在倒计时.这时突然运营的同事跑过来说要统计几个服务器玩家的一些情况,也就是需要从几个服的数据库导出部分玩家的数据.好吧,我看了一下时间,11:47.心想,跟前端调试完,去吃个饭再午休一下那就下午再给吧.没想对方来一句"就导个数据库而已,要这么久么?",而且还是直接跟我上司说的.我嚓,好吧,我导.可问题来了,平时的统计是由php做的,批量部署这些是由运维做的.服务端完全没有对应的工具.而且服务器是在阿里云上的,数据库的用户是限