`
memorymyann
  • 浏览: 265989 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell编程分支,循环

阅读更多

1。分支

 

也就是判断了,先介绍下test(这里牵扯到一个问题,我们写shell时候无论是变量,还是文件名尽量不要和指令名冲突),例如我们想看看当前目录下是否有first.sh这个文件,有就输出haha ,没有就heihei.

[root@liumengli my_shell]# cat shell_example.sh
#!/bin/sh

if [ -f first.sh ]
then
        echo 'This file exit!'
else
        echo 'do not exit!'
fi
exit 0
[root@liumengli my_shell]#

#!/bin/sh

if test -f first.sh
then
        echo 'This file exit!'
else
        echo 'do not exit!'
fi
exit 0

这里test有2中写法,一个是[] 另一个是test,我倾向于[],因为看上去比较清楚,注意的是[]里面2边都记得和判断体有空格,不然会出错(shell对空格要求还真是死,麻烦的东西)。上面就囊括了语法了,语法也不多说了,但大家会对判断体有些疑问,-f first.sh啥意思,意思就是是否在当前目录下能找到first.sh文件,如何比较其它的呢,比如比较2个数大小,我怎么知道那些可以做为判断体,那些不行呢,例如:判断 猫是否是狗这个是否可行呢???这个我也记不住,但也不需要记住,大家执行下man test 就很清楚了,不记得就去查。

帮助手册上有的就不列举了, test比较有3大类,字符串比较,算术比较(貌似我到现在还没写过算术shell脚本),与文件有关的测试

 

刚看了if的控制结构,这里列举下

if condition

then

     statement

else

     statement

fi

记得换行要清楚,不然会出错,当然可以通过加;号来避免,当这样既不出错,可读性又好的写法还是比;号好用不是。;号的写法像这样

#!/bin/sh

if [ -f first.sh ];then
        echo 'This file exit!'
else
        echo 'do not exit!'
fi
exit 0

 

到目前为止,还有个问题,我的分支只有2条路,那我想要第3个岔路呢?那就用到了elif,下面是例子

[root@liumengli my_shell]# cat shell_example.sh
#!/bin/sh

echo "Hello, is it morning? Please answer yes or no?"
read time

if [ $time = "yes" ]; then
        echo 'Good morning'
elif [ $time = "no" ]; then
        echo 'Good afternoon'
else
        echo 'Your answer is not recognized!'
        exit 1
fi
exit 0

 

还有一个重要用法就是

if 命令1

then

      命令2

else

      命令3

fi

 

exit 0

 

如果命令1成功运行(意思就是exit 0)执行命令2,如果命令1执行失败(意思就是exit 1或其他非0的数)就会执行命令命令3

 

其实

if 命令1   就是等于 命令1 if [ $? -eq 0 ] $?记载的是上一个命令的返回状态。

 

2循环

for循环,样例

#!/bin/sh

for foo in 'hello world' 'yuna' 'rikku'
do
        echo $foo
done
exit 0

foo会一个一个去取in后面的内容,然后把它们显示到屏幕上,我想这个很好理解

#!/bin/sh

for foo in `ls *.sh`
do
        echo $foo
done
exit 0
这个我想也不难理解

明显缺陷出来了,对固定次数的循环for就有点麻烦了,比如你想循环打印hello 5次,写成

#!/bin/sh

for foo in 1 2 3 4 5
do
        echo hello
done
exit 0
总是比较麻烦的。

 

while循环

语法是

while condition do

statements

done

很容易理解,给个简单的例子,循环打印hello world 10次

[root@liumengli my_shell]# cat while_shell.sh
#!/bin/sh

i=0
while [ $i -lt 10 ]
do
        echo "hello world"
        i=$(($i+1))
done
exit 0

 

until循环,和while 很像,就是条件成立时候退出循环,不成立进入循环体,和WHILE相反

[root@liumengli my_shell]# cat until_shell.sh
#!/bin/sh
read stat
until [ $stat = "hello" ]
do
        read stat
done

exit 0
[root@liumengli my_shell]#

分享到:
评论
1 楼 suifeng 2008-12-26  
谢谢分享, 受用中.

相关推荐

    shell编程教程.chm

    shell编程-shell编程-分支语句(1) shell编程-shell编程-分支语句(2) shell编程-shell编程-循环语句(1) shell编程-shell编程-循环语句(2) Linux的shell编程(一) Linux的shell编程(二) Linux的...

    Linux网络操作系统基础:shell编程基础.pptx

    Shell 编程基础;熟悉 Shell 基础知识 掌握 Shell 脚本的基本操作 结合实际案例展示 Shell 脚本编写的最佳实践 ;Linux 中的文本流;输出重定向;输入重定向;管道;熟悉 Shell 基础知识 掌握 Shell 脚本的基本操作 结合...

    SHELL编程详细教程——基础篇

    主要针对shell编程的基础做一个阐述,其中包括基础的变量、常量、字符串、数组等的定义方式,一些比较运算符的详细介绍,分支判断语句、循环语句的基础用法、自定义函数的使用方法。还包括一些代码示例

    linnux下Shell编程基础

    作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式...

    Linux快速入门以及shell编程基础知识

    在shell编程方面,我们要学习如何使用变量、条件判断、循环语句等语法结构。编写第一个shell脚本hello world非常简单,利用echo命令输出 Hello World即可。Shell支持多种循环结构,并可进行条件判断、分支和函数等代码...

    linux课件shell编程

    shell编程,linux编程语言,判断结构、 分支结构 以及 循环结构 的编写格式与用法

    shell中的循环语句、判断语句实例

    shell的分支判断主要有2种,if,case 一,for循环 代码如下: #!/bin/bash for file in $(ls /tmp/test/mytest |grep sh) //for in格式是shell for的基本格式,根js的for in类似 do //循环开始你就把它当成{  ...

    Linux的shell编程

    作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式...

    shell脚本编程 - A.pdf

    shell脚本编程的简易教程 Shell 本身是一个用 C 语言编写的程序,它是用户使用 Unix/Linux 的桥梁,用户的大部分 工作都是通过 Shell 完成的。...数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

    Shell编程实验.ppt

    shell程序概述 输入输出重定向 管道操作 shell程序及其执行 shell变量 test命令 条件控制-if结构 case分支语句 循环语句 改变循环 shell常用内部命令 shell程序调试 程序实例 ······

    三、Shell基本编程 – 看这一篇就够了

    目录三、Shell基本编程1、Shell编程介绍2、Shell脚本基本结构3、Shell脚本及运行4、Shell变量及表达式 – 变量类型5、常用的Shell预定义变量6、Shell变量及表达式 – 位置参数7、Shell变量及表达式 –缺省参数8、...

    Shell编程讲稿(经典)

    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用...作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。在C++中,Shell是希尔排序的名称。

    Linux Shell

    Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。 Linux提供了像MicrosoftWindows那样的可视的命令输入界面--X Window...

    linux_shell脚本编程

    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。...作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支。

    shellunix编程前五章

    作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式...

    熟练掌握Shell Script编程,加深对linux系统的理解

    熟练掌握Shell Script编程,加深对linux系统的理解。。1. 知道如何执行shell程序 2. 在shell脚本中要体现条件控制(如if结构和条件分支) 3. 在shell脚本中要体现循环(for,while和until循环) 4. 掌握shell程序的...

    shell (用C语言编写的程序)

    作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式...

    Linux 第四篇 shell编程,逻辑控制

    本篇主要介绍分支控制,循环控制语法。 在此之前,先提两个shell变量的注意点: ①变量赋值时,“=”左右两边不能有空格; ②BASH中的语句结尾不需要分号;   分支控制,基本结构: ① if[expression] then  #code ...

    学习shell必备(CN).chm

    1. 为什么使用shell编程? 2. 带着一个Sha-Bang出发(Sha-Bang指的是#!) 2.1. 调用一个脚本 2.2. 初步的练习 第二部分. 基本 3. 特殊字符 4. 变量和参数的介绍 4.1. 变量替换 4.2. 变量赋值 4.3. Bash变量是不区分类型...

Global site tag (gtag.js) - Google Analytics