shell的循环结构有while和for两种

for循环

#!/bin/bash
#文件名:test.sh i=4 for i in 2 4 6 8 10
do
echo $i
done

echo $i

  运行:

ubuntu@ubuntu:~$ ./test.sh
2
4
6
8
10
10
ubuntu@ubuntu:~$

  注意最后一次输出是10,而不是其他语言中输出4,这一点和JavaScript很类似。

  for循环要循环的内容就是跟在in后面,然后以空格分隔,可能要循环的内容特别多,那么就可以将要循环的内容保存在一个文件中,然后读出来即可。比如下面:

#!/bin/bash
#文件名:test.sh for i in `cat test.txt`
do
echo $i
done
echo $i

  往test.txt中添加一点内容:

ubuntu@ubuntu:~$ echo 1 3 5 7 9 > test.txt
ubuntu@ubuntu:~$ ./test.sh
1
3
5
7
9
9
ubuntu@ubuntu:~$

  shell默认会将空格、制表符(\t)、换行看做是分隔符,所以:

  1、无论内容是以换行或者制表符分隔,for循环都会将其看作是空格分隔,效果上是一样的。

  同时要注意,如果for循环中,集合中的某一项中间包含空格,那么请使用引号将其括起来,因为for循环是以空格分隔的。

  前面讲for循环和其他语言的for循环形式上的差别很大,但是呢,其实shell中for循环也可以向其他语言那样是用for,例子如下:

#!/bin/bash
#文件名:test.sh for ((i=0;i<4;i++))
do
echo $i
done

  运行:

ubuntu@ubuntu:~$ ./test.sh
0
1
2
3
ubuntu@ubuntu:~$

  一定要注意着一种for循环中,使用的是两对括号,在括号中使用像其他语言的三个表达式的格式。其实着一种for循环的do和done可以换成{  和  } 。仅限于for循环,其他循环和判断结构不适用。

自定义分隔符

  上面已经说了,shell默认是以空格、制表符、换行进行分隔,那么如果需要强制分隔符是什么时,可以修改IFS这个环境变量。

#!/bin/bash
#文件名:test.sh IFS='x' #以x为分隔
#IFS=':' #以:为分隔
#IFS=$'\n' #如果是特殊字符,需要在前面加上$
v="aaaaxbbbbbxcccccxddddd"
#其实$v此时的内容是aaaa bbbbb ccccc dddd
for s in $v
do
echo $s
done

  运行:

ubuntu@ubuntu:~$ ./test.sh
aaaa
bbbbb
ccccc
ddddd

  

  

while循环

  while后面跟着判断条件,判断条件可以为多个,但是每一个判断条件都要是用单独的 [  ]括起来,然后多个判断之间使用 &&、||来表示含义。

  例子:

#!/bin/bash
#文件名:test.sh tot=0
num=10
while [ $num -gt 0 ]
do
tot=$[ $tot + $num ]
num=$[ $num - 1 ]
done echo "总和为"$tot

  运行结果如下:

ubuntu@ubuntu:~$ ./test.sh
总和为55
ubuntu@ubuntu:~$

  

until循环

  until循环和while循环刚好相反

  对于while,如果条件成立,则进入循环,否则条件不成立时,就结束循环。

  until则是相反的,如果条件不成立,则进入循环;如果条件成立,则结束循环。

  用until改写上面的例子:

#!/bin/bash
#文件名:test.sh tot=0
num=10
#num小于或等于0时,结束循环,否则进入循环
until [ $num -le 0 ]
do
tot=$[ $tot + $num ]
num=$[ $num - 1 ]
done echo "总和为"$tot

  运行测试结果和上面一样。

shell脚本--循环结构的更多相关文章

  1. LinuxShell脚本——循环结构

    LinuxShell脚本——循环结构 摘要:本文主要学习了Shell脚本中的循环结构. while循环 基本语法 while循环是最简单的一种循环,如果条件满足则执行循环里的语句,如果条件不满足则退出 ...

  2. Linux shell for循环结构

    Linux Shell   for循环结构 循环结构            1:循环开始条件      2:循环操作      3:循环终止的条件 shell语言          for,while ...

  3. shell脚本-循环选择语句

    shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...

  4. 没事就要多做多练,Shell脚本循环例题做一做

    Shell脚本循环例题                 一.示例1                 二.示例2                 三.示例3                 四.示例4 ...

  5. 3.shell脚本循环试题

    shell脚本循环试题 1.计算从1到100所有整数的和 #!/bin/bash a=0 for i in {1..100} #1到100 #每次循环变量i的值也为循环次数 do a=$[ $a + ...

  6. shell脚本循环嵌套

    嵌套循环 在循环语句内使用任意类型的命令,包括其他循环命令,叫做嵌套循环.因为是在迭代中迭代,需要注意变量的使用以及程序的效率问题. 下面举一个for循环嵌套for循环的例子: wangsx@SC-2 ...

  7. shell脚本循环和信号

    条件判断 if     条件1:then COMMAND elif  条件2:then COMMAND else COMMAND(:)        :  表示pass  不执行任何命令 fi 读取用 ...

  8. shell脚本循环处理文件数据

    有一个日志文件为: # cat data.log 需要提取出里面的数据,写shell脚本实现这个功能: #!/bin/bash OLD=$IFS IFS=$'\n' for entry in $(ca ...

  9. shell脚本循环执行mysql语句

    参考资料:Shell脚本中执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分. 解决方法: ...

随机推荐

  1. (转)Python网络爬虫实战:世纪佳缘爬取近6万条数据

    又是一年双十一了,不知道从什么时候开始,双十一从“光棍节”变成了“双十一购物狂欢节”,最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. 翻着安静到死寂的聊天列表,我忽然惊醒,不行 ...

  2. SharePoint在管理中心创建Secure Store

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/35780063 SharePoint在管理中心 ...

  3. [Sdoi2010]古代猪文 (卢卡斯定理,欧拉函数)

    哇,这道题真的好好,让我这个菜鸡充分体会到卢卡斯和欧拉函数的强大! 先把题意抽象出来!就是计算这个东西. p=999911659是素数,p-1=2*3*4679*35617 所以:这样只要求出然后再快 ...

  4. php 生成静态页面

    使用ob函数 <?php require_once(dirname(__FILE__).'/include/config.inc.php'); ?> <?php $dosql-> ...

  5. C语言程序设计II—第二周教学

    第二周教学总结(4/3-10/3) 教学内容 根据邹欣老师的建议,临时修改教学计划,将最后一周的内容:第十二章 文件,提前讲授. 课前准备 在博客园发布作业:2019春第二周作业 作业根据本周讲授的& ...

  6. 动手动脑(lesson 8)

    一. 上面程序在不注释第一个i/j会出错,这是因为程序会顺序运行,在运行到try之前就已经出错,因此不会跳到异常处理. 异常处理基础知识: 二. 三. 运行结果: 运行结果: 四. 运行结果: 总结: ...

  7. React-使用redux-immutable统一数据格式

    在header的reducer.js里把header变成immutable对象之后,在组件里获取focused属性就得这样获取: focused:state.header.get('focused') ...

  8. Ionic app 通知在Moto 360 Watch上显示通知(1)

    手机与Moto 360 watch配对之后,watch上会接收到微信消息的通知,那么我们就可以利用这个特性开发一个App,在Watch显示我们自己的通知,具体过程如下 1.手机扫描二维码安装ticwa ...

  9. 【强化学习】python 实现 q-learning 例一

    本文作者:hhh5460 本文地址:https://www.cnblogs.com/hhh5460/p/10134018.html 问题情境 -o---T# T 就是宝藏的位置, o 是探索者的位置 ...

  10. nginx解决前端跨域配置

    在nginx.conf文件中 添加如上配置: 在ajax中将原来的 url:http://192.168.1.127:8905/findItem 改成:'http://localhost/findIt ...