• Linux shell 读取一行


    Linux shell 读取一行

    方法一

    通过指定IFS--Internal Field SeparatorIFS默认情况下是<space><tab><newline>,可以下脚本中设定IFS

    DEMO 1

    $cat t1.txt 
    abcfd   
    
    $cat test_IFS.sh 
    #! /bin/sh
    
    IFS="c"
    
    for LINE in `cat t1.txt`
    do
         echo $LINE
    done
    
    $sh test_IFS.sh 
    ab
    fd
    

    这里需要读取一行只需将IFS=" "设置为换行符即可。

    DEMO2

    $cat t1.txt 
    a b
    c d
    

    不设置IFS

    $ cat test_IFS.sh 
    #! /bin/sh
    
    #IFS="
    "
    
    for LINE in `cat t1.txt`
    do
        echo $LINE
    done
    
    $sh test_IFS.sh 
    a
    b
    c
    d
    

    设置IFS=" "

    $ cat test_IFS.sh 
    #! /bin/sh
    
    IFS="
    "
    
    for LINE in `cat t1.txt`
    do
        echo $LINE
    done
    
    $sh test_IFS.sh 
    a b
    c d
    

    这样就可以达到读取一行的目的了

    方法2

    利用read命令,从标准输入读取一行,根据IFS进行切分并相应的变量赋值,这里为了我们故意将IFS设置为&,来进行演示

    DEMO3

    $cat test_read.sh 
    #! /bin/sh
    
    IFS="&"
    printf "Enter your name, rank, serial num:"
    read name rank serno
    
    printf "name=%s
    rank=%s
    serial num=%s" $name $rank $serno 
    
    $sh test_read.sh 
    Enter your name, rank, serial num:zk&1&123
    name=zk
    rank=1
    serial num=123
    

    所以我们知道read每次是读一行,因此使用read命令就好了

    DEMO4

    $cat readline_1.sh 
    #! /bin/sh
    
    cat t1.txt | while read LINE
    do
        echo $LINE
    done
    
    $sh readline_1.sh 
    a b
    c d
    

    这里是通过文件重定向给read处理

    方法3

    read去读取文件重定向

    DEMO5

    $cat readline_2.sh 
    #! /bin/sh
    
    while read LINE
    do
        echo $LINE
    done < t1.txt
    
    $sh readline_2.sh 
    a b
    c d
    

    推荐使用方法3

  • 相关阅读:
    微信公众平台开发(46)在线电影/移动影院
    微信公众平台开发(45)食物营养及热量查询
    微信公众平台开发(44)历史上的今天
    微信公众平台开发(43)火车时刻查询
    企业移动互联网O2O微信支付流程图
    淘宝天猫店铺微信公众平台建设指南
    iOS MachO
    iOS mmap
    iOS isEqual
    iOS Hook
  • 原文地址:https://www.cnblogs.com/zk47/p/3905208.html
Copyright © 2020-2023  润新知