shell 坑爹的 for 不如 while read-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3502531
  • 博文数量: 718
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7790
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(718)

文章存档

2024年(4)

2023年(74)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

最近访客
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2022-01-19 18:37:05

对于文本中有空格时,for循环读取的信息会被拆分成多个,而while read却不会搞乱。

假设信息存放在test.txt中:



比较 while read和for的输出效果,如下图:


示例代码:
  1. [oracle@bjdb ~]$ cat test.txt |while read i
  2. > do
  3. > echo $i
  4. > done
  5. sys/oracle@127.0.0.1:1521/orcl as sysdba
  6. test/xx_1234567@192.168.204.134:1521/orcl
  7. 还是一行一行的,保持和原文一致。

  8. [oracle@bjdb ~]$ for i in `cat test.txt`
  9. > do
  10. > echo $i
  11. > done
  12. sys/oracle@127.0.0.1:1521/orcl
  13. as
  14. sysdba
  15. test/xx_1234567@192.168.204.134:1521/orcl
  16. 这里的for循环就把空格也当作一个分隔符,输出了多条,不符合要求

    创建一个脚本,getuser.sh 读取数据库列表后,将信息输出到一个csv文件。

    getuser.sh 内容如下:
    1. #!/bin/bash
    2. # 读取 交易系统_20.59,sys/oracle@192.168.20.59:1521/orcl as sysdba 连接数据库
    3. # 执行sql
    4. source ~/.bash_profile

    5. cat $1 | while read i
    6. do
    7. mc=`echo $i | awk -f [,] '{print $1}'`
    8. db=`echo $i | awk -f [,] {'print $2'}`
    9. rq=`date %y%m%d`

    10. echo '--' $i

    11. sqlplus -s $db<<eof
    12. define mc=$mc
    13. define rq=$rq
    14. set colsep ','
    15. set pagesize 9999 lin 250 echo off heading off verify off feedback off trims on

    16. spool user_$mc_$rq.csv
    17. col mc for a20
    18. col rq for a12
    19. col username for a30
    20. select '&mc' mc, '&rq' rq, username from dba_users;
    21. spool off

    22. eof
    23. done
  17. 连接串信息:

  18. 执行getuser.sh 
  19. 生成的文件内容如下:


  20. 巡检一百个数据库都不怕。
阅读(857) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图