`
memorymyann
  • 浏览: 271798 次
  • 性别: 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 编程指南

    在IT领域,Linux Shell编程是系统管理员和开发者必备的技能之一。它允许用户通过命令行接口与操作系统进行交互,执行自动化任务,编写脚本,甚至进行复杂的系统管理。本篇文章将深入探讨“Linux Shell编程指南”中...

    linux shell 编程1

    Linux Shell编程是Linux系统中非常重要的一个环节,它允许用户通过命令行接口编写脚本,自动化执行一系列操作,极大地提高了工作效率。在这个主题中,我们将深入探讨Linux命令行基础以及Shell编程的相关知识。 首先...

    UNIX SHELL编程.rar

    **UNIX SHELL编程** 在计算机领域,UNIX操作系统以其强大的命令行接口和脚本编写能力而闻名,其中SHELL是用户与系统交互的核心。SHELL不仅仅是一个命令解释器,它还是一个编程语言,允许用户通过编写脚本来自动化...

    shell编程中级实例

    在本文中,我们将深入探讨几个中级Shell编程实例,涵盖if判断语句、case分支语句、for循环、while循环以及逻辑运算符的应用。 1. **if判断语句**: 使用`if`关键字可以从屏幕读取参数,如`read`命令。在`if`后面的...

    shell编程基础.doc

    示例包括二进制到十进制的转换、文件循环拷贝等实用脚本,展示了如何在实际场景中应用Shell编程技巧。 7. 脚本调试 调试Shell脚本可以通过添加`set -x`开启命令行跟踪,显示脚本执行的每一步,帮助定位问题。 ...

    操作系统中 shell编程

    ### 操作系统中的Shell编程知识点概述 #### 一、Shell编程基础 **Shell**是一种用于与计算机操作系统交互的命令行接口。它不仅提供了一个用户与操作系统之间的桥梁,还支持脚本语言,允许用户通过编写一系列命令来...

    Linux与Unix shell编程指南(完整高清版)

    - 控制流结构如循环 (`for`, `while`) 和分支 (`case`) 用于控制脚本的执行流程。 - 掌握这些结构可以使脚本更加灵活和强大。 **知识点23:shell 函数** - shell 函数可以将一系列命令封装起来以便重复使用。 - ...

    unix linux shell编程

    Shell编程则是利用Shell的语法特性编写脚本,实现自动化任务处理。这十八个PDF文件详细介绍了Shell编程的各种命令和技巧,对于深入理解和掌握Unix/Linux环境下的自动化工作流程至关重要。 1. **基础概念**: - **...

    个人认为不错的shell编程资料

    Shell编程是Linux/Unix系统中的一种命令解释器,它允许用户通过命令行界面与操作系统进行交互,执行各种任务。这份“不错的shell编程资料”显然包含了两份PDF文档,旨在为初学者提供详尽的指导,帮助他们入门并掌握...

    shell编程

    3. **流程控制**:包括条件语句(`if...else`)、循环语句(`for`、`while`)和分支结构(`case`)。 4. **变量与参数**:Shell脚本中的变量不需要声明,直接使用即可。`$0`表示脚本本身,`$1`到`$9`表示脚本接收到...

    shell编程(Linux系统)

    ### Shell编程(Linux系统) #### 为什么进行Shell编程 在Linux系统中,虽然存在各种图形界面工具,但Shell依然是一个非常强大的工具。Shell不仅集合了大量的命令,还是一种优秀的编程语言。借助Shell,用户可以实现...

    SHELL编程讲义

    **SHELL编程讲义** SHELL编程是一种在Unix/Linux系统中广泛使用的脚本语言,它允许用户通过命令行界面执行一系列自动化任务。SHELL不仅是一个交互式解释器,还可以用来编写具有复杂逻辑的脚本程序。这篇讲义将深入...

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

    此外,Shell编程中的控制结构包括条件语句(如`if`、`if-else`)、多分支判断(`case`)和循环(`for`、`while`、`until`)。例如,`for`循环常用于遍历列表,`while`循环则根据条件持续执行,直到条件不再满足。 ...

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

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

    shell课件编程知识

    Shell编程是Linux/Unix系统中的命令解释器,同时也是编写脚本的强大工具,广泛应用于系统运维、自动化任务执行和日常操作中。本课件主要涵盖了Shell的基本语法和常用的Shell命令,旨在帮助用户深入理解和掌握这一...

    Linux的shell编程

    Linux的shell编程是操作系统与用户交互的重要方式,它既是命令行接口,也是一种强大的脚本编程语言。shell允许用户通过命令行来执行系统操作,管理文件,以及自动化一系列任务。它是Linux用户日常操作的核心工具,...

    shell语言编程指南

    Shell编程是Linux系统中用于自动化任务和管理系统的核心工具。它是一种解释性的脚本语言,允许用户通过命令行界面执行一系列指令。本文档,即《高级Bash脚本编程指南》,旨在帮助从零基础到有一定经验的程序员深入...

    Linux与UNIX+Shell编程指南

    3. **流程控制**:`if`语句进行条件判断,`for`和`while`循环处理迭代任务,`case`用于多分支选择。 4. **管道和重定向**:`|`管道连接命令,将一个命令的输出作为另一个命令的输入,`>`和`用于重定向输出和输入。 ...

Global site tag (gtag.js) - Google Analytics