Shell脚本之while read line的用法
while read line
do

done < file
read通过输入重定向,把file的第一行所有的内容赋值给变量line,循环体内的命令一般包含对变量line的处理;然后循环处理file的第二行、第三行。。。一直到file的最后一行。还记得while根据其后的命令退出状态来判断是否执行循环体吗?是的,read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续惊醒;当read从文件中读完最后一行后,下次便没有内容可读了,此时read的退出状态为非0,所以循环才会退出。
案例:
[root@centos7 scripts]# cat /root/scripts/info
192.168.37.131 root 123456
192.168.37.132 root 123456 [root@centos7 scripts]# vim 6.sh
#!/bin/bash
file=/root/scripts/info
while read line;do
user=$(echo $line | cut -d " " -f 2)
ip=$(echo $line |cut -d " " -f 1)
passwd=$(echo $line|cut -d " " -f 3)
# cmd=$*
echo "-- $user -- $ip -- $passwd"
done < $file [root@centos7 scripts]# sh 6.sh
-- root -- 192.168.37.131 -- 123456
-- root -- 192.168.37.132 -- 123456
 
另一种也很常见的用法:
command | while read line
do

done

如果你还记得管道的用法,这个结构应该不难理解吧。command命令的输出作为read循环的输入,这种结构长用于处理超过一行的输出,当然awk也很擅长做这种事

案例:

[root@centos7 scripts]# cat /root/scripts/info
192.168.37.131 root 123456
192.168.37.132 root 123456 [root@centos7 scripts]# vim 5.sh
#!/bin/bash
file=/root/scripts/info
cat $file|while read line;do
user=$(echo $line | cut -d " " -f 2)
ip=$(echo $line |cut -d " " -f 1)
passwd=$(echo $line|cut -d " " -f 3)
# cmd=$*
echo "-- $user -- $ip -- $passwd"
done [root@centos7 scripts]# sh 5.sh
-- root -- 192.168.37.131 -- 123456
-- root -- 192.168.37.132 -- 123456

Shell脚本之while read line的用法的更多相关文章

  1. Shell脚本:while read line无法读取最后一行的问题

    [1]Shell脚本:while read line无法读取最后一行的问题 刚刚利用shell脚本处理日志文件时,发现了一个问题:while read line无法读取到最后一行 通过编辑器可以看到待 ...

  2. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  3. Shell脚本、Shell脚本结构、date命令的用法、变量

    1.Shell脚本: shell是一种脚本语言 目的:可以实现自动化运维,能大大增加运维的效率.2.Shell脚本结构:   #!/bin/bash  以#!/bin/bash开头,即以/bin/ba ...

  4. shell脚本编程之变量的小用法

    变量赋值 ${parameter:-word}:如果parameter为空或未定义,则变量展开为"word":否则,展开为parameter的值: ${parameter:+wor ...

  5. shell脚本介绍
 shell脚本结构和执行
date命令用法
 shell脚本中的变量

  6. shell脚本,tee小工具的用法。

    解释: tee是个工具 , 它的作用就是把标准输出,复制一份,扔文件里 ,原标准输出还输出,-a就相当于 >> 追加到文件里的意思.  不加就是 > 重定向到文件里去.

  7. 利用 tee 命令调试shell脚本中的管道

    在编写shell脚本时,调试是个比较麻烦的事,特别是涉及到多层管道命令的时候,会产生多个中间结果,tee命令的作用是从标准输入中读取数据写入标准输出或文件中,利用它可以从管道中读取中间结果并写入本地临 ...

  8. Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法

    一.需求背景     因此次项目的生产环境中部署了多套系统,每天会产生大量的日志(数百GB的量),侵占了服务器宝贵的存储资源空间.为了有效缓解服务器存储压力,考虑通过Linux的Shell脚本结合cr ...

  9. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  10. Shell脚本字符串匹配及日常命令工具 - 用法总结(技巧指南)

    Shell提供了很多字符串和文件处理的命令,如awk.expr.grep.sed等命令,还有文件的排序.合并和分割等一系列的操作命令.下面重点总结下Shell字符串处理.文本处理以及各类命令及函数用法 ...

随机推荐

  1. vue3中使用vite-ts构建项目时tsconfig.json的配置

    在上一次创建vue3项目在tsconfig.json中配置了文件别名以后,格式校验提示 es3什么鬼,便去看了一下tsconfig.json的配置,以此学习 { "compilerOptio ...

  2. 视觉里程计1-SLAMCP7

    --20.11.27 在CP2里面讲到,视觉SLAM主要分为视觉前端以及优化后端,后端也被称为视觉里程计(VO).根据相邻图像的信息,估计粗略的相机运动,给后端提供较好的初始值.VO的实现方法按是否需 ...

  3. 多线程—ThreadLocal

    一.ThreadLocal的含义 线程的变量副本(就像命名一样),每个线程隔离. 二.ThreadLocal的结构 每个Thread都有自己的ThreadLocalMap,ThreadLocalMap ...

  4. NOIP2015 pj

    达成成就!--尝试不看题解的情况下用cpp打完了一套NOIP pj 题目全部在luogu上-- P2669 金币 题目描述 国王将金币作为工资,发放给忠诚的骑士.第一天,骑士收到一枚金币:之后两天(第 ...

  5. sourceCRT 开发vbs测试

    $language = "VBScript" $interface = "1.0" ' This automatically generated script ...

  6. C语言——函数

    C 语言中的函数定义形式: return_type function_name( parameter list ) //函数头 { //函数体 body of the function } 返回类型: ...

  7. 4组-Beta冲刺-3/5

    一.基本情况 队名:摸鲨鱼小队 组长博客:https://www.cnblogs.com/smallgrape/p/15600609.html github链接:https://github.com/ ...

  8. MyBatis-Plus数据源失效找不到

    记一次项目排查问题项目应用了MyBatis-Plus多数据源配置但是在执行定时任务时发现没达到想要的结果于是查询日志分析问题最终发现问题所在多数据源注解会合事务注解冲突导致失效@DS("&q ...

  9. JavaScript常见事件记录

    JavaScript常见事件记录 onblur: 元素失去焦点 onfocus: 元素获得焦点 onchange: 用户改变域的内容 onclick: 鼠标点击某个对象 ondblclick: 鼠标双 ...

  10. SpringIOC以及AOP注解开发

    和 XML 配置文件一样,注解本身并不能执行,注解本身仅仅只是做一个标记,具体的功能是框架检测到注解标记的位置,然后针对这个位置按照注解标记的功能来执行具体操作. 本质上:所有一切的操作都是 Java ...