read:将信息读入一个或多个Shell变量
    语法格式:read [-r] 变量名
    选项:
        -r:原始读入,不做任何处理,不将结尾结尾处的反斜杠解释为续行字符
    行为模式:自标准输入读取数据后,通过Shell字段分隔的功能(使用$IFS)进行切分,第一个单词赋给第一个变量,第二
              个单词赋给第二个变量,以此类推。如果单词多与变量,则剩下的单词,全赋给最后一个变量。read一旦遇到
              文件结尾(end-of-file),会以失败值退出。
              如果输入行以反斜杠结尾,则read会丢弃反斜杠和换行字符,然后继续读取下一行。如果有-r选项,那么read
              就会以字面含义读取最后的反斜杠。
       linlin@ubuntu:~$ read TOM
       cat
       linlin@ubuntu:~$ echo $TOM
       cat
       linlin@ubuntu:~$ read JERRY MARRY
       dog pear apple
       linlin@ubuntu:~$ echo $JERRY
       dog
       linlin@ubuntu:~$ echo $MARRY
       pear apple
 
    警告:当将read使用在管道时,许多Shell会在一个分开的进程内执行它,在这种情况下,任何以read设置的变量,都不会
          保留它们在父Shell里的值,对管道中间的循环,也是这样。
         
    read最典型的用法是处理/etc/passwd文件,可以使用简单的循环逐行处理:
    #!/bin/bash
  #
  while IFS=: read USER PASS UID GID FULLNAME HOMEDIR SEHLE
  do
    ... 处理每个用户
  done < /etc/passwd
  这个循环并不是说“当IPS等于冒号时,便读取。。。”,而是通过IFS设置,让read使用冒号作为分隔字符,而并不影响IFS
  的值,它只改变read所继承的环境内的IFS值。
  当遇到文件尾时,read会以非零值退出,这个操作会使while循环终止。
  将/etc/passwd的重定向放置于循环体的结尾有点奇怪,不过这是必须的,这样才能使read在每次循环的时候看到后续的行,
  如果循环写成:
    while IFS=: read USER PASS UID GID FULLNAME HOMEDIR SEHLE < /etc/passwd
    do
      ... 处理每个用户
    done
    循环就永远不会终止,每次循环时,Shell都会在打开/etc/passwd一次,且read只读取文件的第一行。
    这种循环还有另一种替代的方式,就是在管道里把cat和循环一起使用:
       cat /etc/passwd |
      while IFS=: read USER PASS USERID GROUPID FULLNAME HOMEDIR SEHLE
      do
        处理方式
      done
    小技巧:任何命令都能用来将输入通过管道传送给read。当read用在循环中时,这个方法格外有效。

最新文章

  1. 用jquery.pager.js实现分页
  2. 烂泥:学习ssh之ssh密钥随身携带
  3. 使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
  4. Git-仓库基本结构
  5. MSSQL大数据量增加字段耗时对比
  6. 使用SQL Server存储ASP.NET Session变量
  7. 玩转变量、环境变量以及数学运算(shell)
  8. cf A. Inna and Pink Pony(思维题)
  9. Android学习–Android app 语言切换功能
  10. springmvc+maven
  11. Laravel Eloquent get获取空的数据问题
  12. 接口测试之postman简介
  13. oracle 字符串截取substr和instr
  14. 安卓4.0以上系统怎么不用root激活XPOSED框架的方法
  15. Redis主从复制、多实例、高可用(三)--技术流ken
  16. maven项目部署到Tomcat
  17. js中使用将json数组 转换为json将一个包含对象的数组用以创建一个包含新重新格式化对象的新数组
  18. LEFT JOIN、RIGHT JOIN、INNER JOIN、FULL JOIN 使用
  19. 前端-JavaScript1-1——JavaScript简介
  20. mySQL配置文件、备份与恢复

热门文章

  1. C++学习周记
  2. c++类流操作运算符的重定义
  3. memcached内存分配
  4. 如何用纯 CSS 创作一个金属光泽 3D 按钮特效
  5. Postman插件如何安装
  6. MySQL 初识
  7. 【HIHOCODER 1325】 平衡树&#183;Treap
  8. 跟初学者学习IbatisNet第一篇
  9. idea没有tomcatserver问题解决
  10. 理工个人积分赛最后一场(FZU)G - 五子棋,坑爹的大水题~~