[shell] while read line 与for循环的区别
[shell] while read line 与for循环的区别
while read line 与for循环的区别---转载整理
while read line 是一次性将文件信息读入并赋值给变量line ,while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量。
for是每次读取文件中一个以空格为分割符的字符串。
如下示例脚本:
- #/bin/bash
- IPS="10.1.1.10 3001
- 10.1.1.10 3003
- 10.1.1.11 3001
- 10.1.1.11 3002
- 10.1.1.11 3004
- 10.1.1.11 3005
- 10.1.1.13 3002
- 10.1.1.13 3003
- 10.1.1.13 3004
- 10.1.1.14 3002"
- echo "====while test ===="
- i=0
- echo $IPS | while read line
- do
- echo $(($i+1))
- echo $line
- done
- echo "====for test ===="
- n=0
- for ip in $IPS ;
- do
- n=$(($n+1))
- echo $ip
- echo $n
- done
输出结果如下:
- ====while test ====
- 1
- 10.1.1.10 3001 10.1.1.10
3003 10.1.1.11 3001 10.1.1.11
3002 10.1.1.11 3004 10.1.1.11
3005 10.1.1.13 3002 10.1.1.13
3003 10.1.1.13 3004 10.1.1.14
3002 - ====for test ====
- 10.1.1.10
- 1
- 3001
- 2
- 10.1.1.10
- 3
- 3003
- 4
- 10.1.1.11
- 5
- 3001
- 6
- 10.1.1.11
- ....
当文件中有多行文字,在while循环中再一次调用read语句,就会读取到下一条记录。而$line中的最后一行已经读完,无法获取下一行记录,从而退出
while循环。
若使用while循环,想每次读取其中1行内容到变量$line,则可以使用以下方法:
#!/system/bin/sh
busybox cat /data/data/1.txt | while read LINE
do
adb shell gsr -m -p /data/data/$LINE 10000
done
--------------------------------------------------------------------------------------------------------------------
原作者的【解决方法】---存疑,不太理解,后续学习
1 使用ssh -n "command"
2 ssh "cmd" < /dev/null 将ssh 的输入重定向输入。
[shell] while read line 与for循环的区别的更多相关文章
- 【shell】while read line 与for循环的区别
http://m.blog.itpub.net/22664653/viewspace-1175858/
- Linux:while read line与for循环的区别
while read line:是一次性将文件信息读入并赋值给变量line , while中使用重定向机制,文件中的所有信息都被读入并重定向给了整个while 语句中的line 变量. for:是每次 ...
- 简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环)
简单的自动化运维工具(shell+except+whiptail+功能模块化函数+循环) http://www.cnblogs.com/M18-BlankBox/p/5881700.html
- 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE
http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...
- Shell脚本的条件控制和循环语句
条件判断:if语句 语法格式: if [ expression ] then Statement(s) to be executed if expression is true fi 注意:expre ...
- 『忘了再学』Shell流程控制 — 38、while循环和until循环介绍
目录 1.while循环 2.until循环 1.while循环 对while循环来讲,只要条件判断式成立,循环就会一直继续,直到条件判断式不成立,循环才会停止.和for循环的第二种格式for((初始 ...
- do while 循环和while循环的区别
do while 循环和while循环的区别 1.do while循环是先执行循环体,然后判断循环条件,如果为真,则执行下一步循环,否则终止循环: while循环是先判断循环条件,如果条件为真则 ...
- python中生成器对象和return 还有循环的区别
python中生成器对象和return 还有循环的区别 在python中存在这么一个关键字yield,这个关键字在项目中经常被用到,比如我写一个函数不想它只返回一次就结束那我们就不能用return,因 ...
- [转载]Java迭代器(iterator详解以及和for循环的区别)
Java迭代器(iterator详解以及和for循环的区别) 觉得有用的话,欢迎一起讨论相互学习~[Follow] 转载自 https://blog.csdn.net/Jae_Wang/article ...
随机推荐
- MySQL连接超时处理
1.由于MySQL默认是8小时的wait_timeout,当超过8小时的连接时间后,在JAVA中调用将出现如下报错 SEVERE EXCEPTION com.mysql.jdbc.exceptions ...
- Linux的网络参数设置
前面讲解了lLinux 的IP组成,下面就讲一下Linux的网络设置和数据传递. 其实这地方对运维的人员来说,不会要精通,但还是要了解.必要时刻还会用到的 电脑之间数据的传递: 数据的传递要分为下面几 ...
- 【转】Pandas学习笔记(六)合并 merge
Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...
- pycharm调整选中的变量的颜色
- Pandas | 22 时间差
时间差(Timedelta)是时间上的差异,以不同的单位来表示.例如:日,小时,分钟,秒.它们可以是正值,也可以是负值.可以使用各种参数创建Timedelta对象,如下所示 - 字符串 通过传递字符串 ...
- A Deep Dive into PL/v8
Back in August, Compose.io announced the addition of JavaScript as an internal language for all new ...
- C++标准库中的std::endl究竟做了什么?
先抓出std::endl的源代码: /** * @file ostream * @brief Write a newline and flush the stream. * * This m ...
- axios二次封装
import axios from "axios" //请求拦截器 axios.interceptors.request.use(function (config) { retur ...
- 洛谷P2704 [NOI2001]炮兵阵地题解
题目描述 司令部的将军们打算在\(N * M\)的网格地图上部署他们的炮兵部队.一个\(N * M\)的地图由N行M列组成,地图的每一格可能是山地(用\("H"\) 表示),也可能 ...
- ZROI 暑期高端峰会 A班 Day6 离线问题
FBI Warning:本文含有大量人类本质之一. 动态联通问题 允许离线. 模板,不讲了. 归并排序 %@)(#&%)++%($@)%!#(&%)(&@))) 主定理 U^( ...