Read a file line by line assigning the value to a variable

后端 未结 10 975
说谎
说谎 2020-11-21 07:37

I have the following .txt file:

Marco
Paolo
Antonio

I want to read it line-by-line, and for each

相关标签:
10条回答
  • For proper error handling:

    #!/bin/bash
    
    set -Ee    
    trap "echo error" EXIT    
    test -e ${FILENAME} || exit
    while read -r line
    do
        echo ${line}
    done < ${FILENAME}
    
    0 讨论(0)
  • 2020-11-21 08:18

    Use:

    filename=$1
    IFS=$'\n'
    for next in `cat $filename`; do
        echo "$next read from $filename" 
    done
    exit 0
    

    If you have set IFS differently you will get odd results.

    0 讨论(0)
  • 2020-11-21 08:22
    #! /bin/bash
    cat filename | while read LINE; do
        echo $LINE
    done
    
    0 讨论(0)
  • 2020-11-21 08:22

    The following will just print out the content of the file:

    cat $Path/FileName.txt
    
    while read line;
    do
    echo $line     
    done
    
    0 讨论(0)
  • 2020-11-21 08:23

    I encourage you to use the -r flag for read which stands for:

    -r  Do not treat a backslash character in any special way. Consider each
        backslash to be part of the input line.
    

    I am citing from man 1 read.

    Another thing is to take a filename as an argument.

    Here is updated code:

    #!/usr/bin/bash
    filename="$1"
    while read -r line; do
        name="$line"
        echo "Name read from file - $name"
    done < "$filename"
    
    0 讨论(0)
  • 2020-11-21 08:28

    If you need to process both the input file and user input (or anything else from stdin), then use the following solution:

    #!/bin/bash
    exec 3<"$1"
    while IFS='' read -r -u 3 line || [[ -n "$line" ]]; do
        read -p "> $line (Press Enter to continue)"
    done
    

    Based on the accepted answer and on the bash-hackers redirection tutorial.

    Here, we open the file descriptor 3 for the file passed as the script argument and tell read to use this descriptor as input (-u 3). Thus, we leave the default input descriptor (0) attached to a terminal or another input source, able to read user input.

    0 讨论(0)
提交回复
热议问题