http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html

nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法。

一、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用法):

  • 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;

  • 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

  • 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用法)

  • 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的流程控制语句,条件,循环,选择。

linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例 --转载的更多相关文章

  1. [转]linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例

    原文链接:http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html linux shell有一套自己的流程控制语句,其中包括条件语句 ...

  2. linux shell 流程控制

    导读 和Java.PHP等语言不一样,linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case).下面我将通过例子介绍下,各个语句使 ...

  3. Linux Shell——流程控制

    1. 创建交互式脚本 使用 echo命令的选项 关于各种命令的使用,可以使用man 命令来查看命令的详细用法介绍.例如,我想看下 echo 的用法和各种选项.可以执行 man echo.执行结果如下: ...

  4. Shell 流程控制-if for case while until break continue

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...

  5. [转帖]流程控制:for 循环

    流程控制:for 循环 http://wiki.jikexueyuan.com/project/linux-command/chap34.html need more study need more ...

  6. 九、Shell 流程控制

    Shell 流程控制 和Java.PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <?php if (isset($_GET["q"])) { ...

  7. day04流程控制之while循环

    流程控制之while循环 1.什么是while循环 循环指的是一个重复做某件事的过程 2.为何有循环 为了让计算机能像人一样重复 做某件事 3.如何用循环 ''' # while循环的语法:while ...

  8. php总结3——基本函数、流程控制中的循环

    3.1 php基本函数(数学.日期.字符串) 数学函数:max         mixed max(number $arg1,number $arg2,……)  求一组数据中的最大值        m ...

  9. 流程控制之while循环for循环

    流程控制之while循环1.什么是循环 循环就是重复做某件事2.为什么要有循环 为了让计算机能够具备人重复做某件事的能力3.如何用循环 while语法: while 条件: code1 code2 c ...

随机推荐

  1. strcmp传入nil导致崩溃

    现象:连接电脑可以正常启动程序,不连接电脑启动程序就崩溃. 崩溃信息: BSXPCMessage received error for message: Connection invalid HW k ...

  2. 线程同步中使用信号量AutoResetEvent

    using System; using System.Threading; namespace ConsoleApplication1 { class Program { static void Ma ...

  3. DotNetMQ的一个小demo

    DotNetMQ是一个新的.独立的.开源的,完全基于C#和.NET Framework3.5的消息队列系统 下载源代码 - 1.28 MB 下载二进制文件 - 933 KB 下载例子 - 534 KB ...

  4. 解决.Net 4.0 A potentially dangerous Request.Form value was detected from the client 异常

    在web.config中加入 <httpRuntime maxRequestLength="22000" executionTimeout="43200" ...

  5. EWM一个仓库号对应ERP多个PLANT的配置

    1. CIF多个DC到EWM系统,创建SCU并配置成仓 2. tx:/sapapo/loc3 对多个DC生成分配模型 3. IMG:分配仓库编号 去掉缺省的授权处理方 4. 维护SCU hierarc ...

  6. 简单谈谈Resource,Drawable和Bitmap之间的转换

    一直接触这些东西,还是归个类整理一下比较好. Resource -> Drawable Drawable draw1 = this.getResources().getDrawable(R.dr ...

  7. Think in java 4th读书笔记__last update20151130

    一周至少两章,去掉最后的并发和图形化用户界面,刚好需要2个半月才能学好.这进度感觉有点慢,所以做下调整吧,改成一个月会不会更好点^^,认认真真的把java的圣经给看一遍. 计划: 第1~6 11.17 ...

  8. ubuntu 16.04 source (HUST and 163)

    #HUST deb http://mirrors.hust.edu.cn/ubuntu/ xenial main restricted universe multiverse deb http://m ...

  9. [数据库]SQL Server 用户NT AUTHORITY\IUSR 登录失败

    今天打开网站时,突然报这个错误,平时都好好的 Cannot open database "JMECC" requested by the login. The login fail ...

  10. OAuth2.0和SSO授权

    一.OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务器确认后,返回本APP一个访问令牌,本APP即可用该访问令牌访问资源服务器的资源.由于 ...