一.if语句格式:支持if/elif/else形式,支持嵌套

  1. command执行成功(及退出状态为0)时,执行command2

  2. 当判断条件为test命令时,判断结果为true时,执行command2

if command; then
command1
else
  command2
fi if command
then
command
fi

二. for语句格式

for var in list
do
command
done

1.读取列表中得值

  a.列表中的值默认以空格分隔,

  b.当值中包含单引号需要转义或者使用双引号

  c.值中包含空格,需使用双引号括起来

for var in I\'m come from Nanjing and I want go to "New York", I can\'t say France
do
echo $var
done

2. 从变量读取列表

list="AAA BBB CCC"
list=$list" CCC" #字符串追加内容
for var in list
do
echo $var
done

3. 读取命令中得值

for var in `cat /etc/passwd`
do
echo $var
done

4. 字段分隔符

  在3的示例中,内容并不是按行输出的,因为在shell中将【空格/制表符/换行符】看做字段分隔符

  在上例中如果希望内容按行输出,则需要修改字段分隔符

IFS.OLD=$IFS
IFS=$'\n' for var in `cat /etc/passwd`
do
echo $var
done IFS=$IFS.OLD

三.while语句

#while命令中test command的格式和if语句相同
while test command
do
command
done

1.while的测试语句结果为真或者命令退出状态为0的时候,循环会一直进行下去,通常需要在循环体内改变test的结果

2.while的测试语句可以写多条命令,以最后一条命令的结果为判断依据。

3.while的测试语句比循环体内的语句多执行一次(即最后判断失败的那一次)

var1=
while echo $var1
[ $var -ge ]
do
echo "Now in loop"
var1=$[ $var1 - ]
done

四.until语句

# until命令的执行方式与while正好相反,当测试结果为假或者命令退出状态非0时,循环继续
# until的测试语句中也可以写多条命令
until test command
do
command
done

五.continue和break语句

1.break 跳出循环

  a.可以用在for/while/until语句中

  b. break终止当前循环

  c. "break n"终止指定层循环,n=1代表当前循环,n=2代表当前循环的上一层循环

2.continue 跳过本次循环继续循环

  a.用法与break基本相同

  b.确保continue不会跳过对循环判断条件的改变,否则会造成死循环

六. 循环的输出

可以在done关键字的末尾使用管道或者重定向来处理循环体内的输出

#重定向
for file in ~
do
if [ -d $file]
then
echo "$file is directory"
else
echo "$file is file"
fi
done > out.txt #管道
for user in `cat /etc/passwd`
do
echo $user
done | sort

Linux Shell 02 流程控制语句的更多相关文章

  1. linux shell awk 流程控制语句(if,for,while,do)详细介绍

    在linux awk的 while.do-while和for语句中允许使用break,continue语句来控制流程走向,也允许使用exit这样的语句来退出.break中断当前正在执行的循环并跳到循环 ...

  2. linux shell 之流程控制 if if else while

    (1)流程控制不可以为空: (2)if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi 条件 ...

  3. Linux shell awk逻辑控制语句

    awk逻辑控制语句 1,if...else 格式: if(条件){语句:语句} else {语句1:语句2} 如果statement只有一条语句,{}可以不写 以冒号为分隔符,判断第一个字段,如果为r ...

  4. Linux中的流程控制语句

    if语句 if [ 条件判断式 ] then 程序elif [ 条件判断式 ] then 程序else 程序fi 注意: a.使用fi结尾 b.条件判断式和中括号之间需要有空格 [root@local ...

  5. linux shell编程流程控制

    条件选择 单分支条件 多分支条件 选择执行if语句 单分支 if 判断条件;then 条件为真的分支代码 fi 双分支 if 判断条件; then 条件为真的分支代码 else 条件为假的分支代码 f ...

  6. 【转】Awk 命令学习总结、AWk命令系列学习(linux shell)

    前面的话 学习linux 的同人,都知道linux shell文本处理能力非常强大.有一组强大的文本处理工具:grep,sed,awk . 其中grep 经常用作查找匹配文本.sed用作文本编辑替换. ...

  7. Awk 命令学习总结、AWk命令系列学习(linux shell)

    AWK基本语法 下面没有提到awk命令怎么使用了,你可以通过 运行:awk –h 查询到所有命令及参数!下面把awk作为一门语言分节介绍. linux awk 内置变量使用介绍   awk语言中,怎么 ...

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

    http://www.cnblogs.com/chengmo/archive/2010/10/14/1851434.html nux shell有一套自己的流程控制语句,其中包括条件语句(if),循环 ...

  9. shell流程控制语句

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

随机推荐

  1. 连接不上mysqlworkbench问题解决方法

    连接mysqlworkbench出现如下提示:     查看ip     加入host的范围 mysql> select user,host from mysql.user;+--------- ...

  2. [阅读]个人阅读作业week7

    People-oriented in Agile People-oriented in Agile One Leader Prepare Good ideas from users People-or ...

  3. 软件测试之构建测试---BVT

    1. 构建的基本流程: a. 开发人员在他们的个人计算机上编写源代码文件 b. 他们将编写好的文件存放在一个统一集中的地方,构建组将所有的源代码编译成可以在计算机上运行的二进制文件,且用安装工具把各种 ...

  4. 使用Eclipse Installer安装Eclipse

    由于一些原因,需要重新安装Eclipse,登陆到Eclipse官网下载Eclipse时发现社区又推出了Eclipse Installer.所以就下下来尝尝鲜. 刚开始确实有些选项不太明白,不过现在挺喜 ...

  5. ASP.NET使用UpdatePanel实现AJAX

    ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...

  6. 以对象的方式来访问xml数据表(二)

    为什么要以对象的方式来访问xml数据表? 还记得,自己是在一次完成师兄布置的任务时接触到了xml,那时候需要用xml来作为数据文件,保存一个简单的图书管理系统的数据.于是就知道了,可以用xml文件来保 ...

  7. Angularjs,WebAPI 搭建一个简易权限管理系统 —— Angularjs名词与概念(一)

    目录 前言 Angularjs名词与概念 Angularjs 基本功能演示 系统业务与实现 WebAPI项目主体结构 Angularjs 前端主体结构 2. 前言 Angularjs开发CRUD类型的 ...

  8. windows临界区

    临界区: 临界区是一种轻量级机制,在某一时间内只允许一个线程执行某个给定代码段.通常在多线程修改全局数据时会使用临界区.事件.信号量也用于多线程同步,但临界区与它们不同,并不总是执行向内核模式的切换, ...

  9. 将 C# 编译为原生机器码

      C# 用户似乎都希望 C# 可以和 C++ 一样编译为本地的机器码.如果 C# 可以编译为机器码,将可以做到: 1. 效率提高,可以取代 C++ . 2. 反编译.   当然微软在商业利益的考虑下 ...

  10. React入门--------组件API

    setState 参数:nextState(object),[callback(function)] 设置nextState的某个键值.通常如果希望在某个事件或某个回调中来重新渲染组件,setStat ...