bash6——循环
for fruit in apple orange pear #写死
do
each ${fruit}s
done fruits="apple orange pear" #输入变量的值
for f in $fruits
一、for循环
1、向for提供数据
1)写死 或 变量
2)read
3)从命令行读取$* $@
for fruit in $*; do 或者 for fruit; do(这一技术使用于函数,乱入函数:)
do_i_like()
{
for fruit; do
echo I realy like ${fruit}s
done
}
do_i_like apple banana oranges
4)使用seq命令给for输入数据(用于产生从某个数到另外一个数之间的所有整数)
# seq 1 10
结果是1 2 3 4 5 6 7 8 9 10
for i in `seq 1 10`
for host in `grep "172.30.0" /etc/hosts | awk '{ print $2 }'`
2 bash有类似C风格的for循环
for ((i=,j=; i<=; i++,j-= ))
do
printf "i=%03d j=%03d\n" $i $j
done
二、while循环
在没有需要遍历的列表但在具有决定循环何时结束的可测试条件时,使用while最合适。
1)测试循环本身的变化
2)逐行读取文本文件的内容
read password < /etc/passwd读入一行
while read passwd
do
echo $passwd #这里可以加入好多功能!
done < /etc/passwd一直循环读,直到不再输入
#!/bin/bash
#通过管道循环读取/etc/passwd内容
cat /etc/passwd | while read line
do
#以:为分割符,只读取第一个字段
user=`awk -F : '{print $1}' <<< ${line}`
echo "Account: ${user}"
done
3)重定向到文件
i=
while [ $i -lt ]
do
echo "`date`" : Partition $i
ls -ld /dev/sda$i
sleep
let i=$i+
done > partition.txt >partitionerror.txt
4)内置的:命令,或者是/bin/true命令,他们总是返回0,表示成功,使用他们可以让循环永远执行下去。
host=${:-declan}
while grep -qw $host /tmp/hosts-to-ping.txt
do
:
done
5)死循环
while : #中间有空格
do
echo 'xx'
sleep
done
用ctrl+c结束
三、嵌套循环
一个循环存在于另一个循环中
四、循环的break和continue
break break 2退出两层;
continue continue 2表示要跳转的外层循环层数
五、带case的while循环
就是while里边使用case
六、until循环
除了测试条件相反,until循环与while循环在其他地方完全相同。即满足条件就退出循环
until 条件
do
:
done
七、select循环
非常适合编写菜单的循环,常和if、case等一起使用
它根本没有条件测试,退出的唯一方式是使用break或exit 打断用ctrl+c
提示符在$PS3变量
和for一样可以去掉in (x),这样select会使用自己所在的脚本或函数的$*参数
我的samba管理器好想可以用它做一个命令行的!
select item in one two three four five
do
if [ ! -z $item ]; then
echo "You choiced $item"
break
else
echo "$REPLY is not valid" 用户输入的值在$REPLY变量
fi
done
bash6——循环的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- 【JS基础】循环
for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- .NET基础 一步步 一幕幕[循环、逻辑语句块]
循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...
随机推荐
- ride.py打不开RF,而是打开pycharm
标题中问题的解决方式: 进入到E:\soft\Python\Python36\Scripts,选中ride.py右键-打开方式选择python即可
- 浅谈K-means聚类算法
K-means算法的起源 1967年,James MacQueen在他的论文<用于多变量观测分类和分析的一些方法>中首次提出 “K-means”这一术语.1957年,贝尔实验室也将标准算法 ...
- Java匹马行天下之新手学习目录
Java匹马行天下之新手学习目录 学习路线 [Java匹马行天下——Java学习路线] [Java匹马行天下——开篇学习计划] 基础篇 [Java匹马行天下之学编程的起点——编程常识知多少] [Jav ...
- ESP8266开发之旅 网络篇⑬ SPIFFS——ESP8266 SPIFFS文件系统
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- dubbo初学采坑记
写在前面的话 dubbo 现在是apache组织旗下的项目,相信国内也有很多人使用.最近一个同事离职,我就接手了他的项目.远程通讯就是用的dubbo框架来实现的.使用Intelij idea 写了一个 ...
- 消息队列 ActiveMQ 、RocketMQ 、RabbitMQ 和 Kafka 如何选择?
「 预计阅读 6 分钟 」 旁白:这是一篇拖更了N久的文章...0.0(看不见我~) 往期回顾 前端框架 jQuery 和 Vue 如何选择? 安全框架 Shiro 和 Spring Security ...
- html2canvas 生成电子合同书
首先给合同书父级加个ref 然后用html2canvas 插件 然后html2canvas 坑区来了,生成页面的时候,合同书是很长的.他有一部分是黑色的, 最开始从前辈们了解到是滚至顶部解决偏移.然后 ...
- NOIP提高组/CSP-S复赛需掌握的算法
1.排序算法(快排.选择.冒泡.堆排序.二叉排序树.桶排序) 2.DFS/BFS 也就是搜索算法,剪枝务必要学! 学宽搜的时候学一下哈希表! 3.树 ①遍历 ②二叉树 ③二叉排序树(查找.生成.删除) ...
- Python进阶函数
一.函数的动态参数 之前我们说过了传参, 如果我们需要给一个函数传参, 而参数又是不确定的. 或者我给一个函数传很多参数, 我的形参就要写很多, 很麻烦, 怎么办呢. 我们可以考虑使用动态参数. 动态 ...
- SpringMVC----执行流程+底层解析
SpringMVC流程图如上面所示,根据上图,串联一下底层源码: 1.在DispatcherServlet中找到doDisPatch 2.观察方法体,然后找到getHandler方法 3.点进方法,发 ...