shell脚本--循环结构
2023-09-14 08:56:53 时间
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
运行测试结果和上面一样。
相关文章
- spring循环依赖-不仅仅是八股文
- 数据结构–循环队列[通俗易懂]
- shell循环做数字递增
- linux shell 循环处理文件夹每个文件
- shell 循环语句[通俗易懂]
- js事件循环机制和优先级
- JavaScript案例:循环精灵图和显示隐藏文本框内容
- 51单片机——7段数码管的循环显示
- PHP- 控制流-循环语句-while(一)
- android软件开发之webView.addJavascriptInterface循环渐进【一】详解手机开发
- Linux 查看 Shell 版本的方法(linux查看shell版本)
- Linux进程循环:实现无限可能性(linux进程循环)
- 连接数据库Shell使用MySQL连接数据库的简单方法(shell通过mysql)
- shell让工作更加高效——Linux Shell编程(工作linux)
- Linux系统下循环读取文件的方法(linux循环读取文件)
- 命令Mysql数据库导出使用Shell命令(mysql导出shell)
- 使用Shell脚本操作MySQL数据库(shell连接mysql)
- Linux 与 Shell 互补指南(linux和shell)
- Linux默认Shell:选择合适的工具让你的命令行更好用(linux默认shell)
- 脚本编写Linux下的Shell脚本:提升工作效率(linux编写shell)
- 使用 Linux 中文 Shell 轻松愉悦的掌握命令行(linux中文shell)
- 命令提升效率:学习Linux的常用Shell命令(linux常用shell)
- 脚本Linux 中的 Shell 脚本:智能化自动化的提速器(linux中 shell)
- Linux:实现循环复制的简便方式(linux 循环复制)
- C#数据结构之循环链表的实例代码
- 兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
- android教程viewpager自动循环和手动循环
- jquery中的each()跳出循环的语句
- js使用for循环查询数组中是否存在某个值