zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Leetcode 811. Subdomain Visit Count
    Leetcode 70. Climbing Stairs
    Leetcode 509. Fibonacci Number
    Leetcode 771. Jewels and Stones
    Leetcode 217. Contains Duplicate
    MYSQL安装第三步报错
    .net 开发WEB程序
    JDK版本问题
    打开ECLIPSE 报failed to load the jni shared library
    ANSI_NULLS SQL语句
  • 原文地址:https://www.cnblogs.com/zk47/p/3905208.html
Copyright © 2011-2022 走看看