Przetwarzanie pliku wiersz po wierszu

  1. Przeanalizuj działanie następującego skryptu:

    #!/bin/bash
    i=0
    while read line; do
    let i++
    lines1[$i]=$line
    #echo $i "  " ${lines1[$i]}
    done</etc/hosts
    echo "XXX"${lines1[3]}"YYY"
    
  2. Przeanalizuj działanie następującego skryptu:

    #!/bin/bash
    i=0
    cat /etc/hosts | while read line; do
    let i++
    lines2[$i]=$line
    # echo $i "  " ${lines2[$i]}
    done
    echo "XXX"${lines2[3]}"YYY"
    
  3. Przeanalizuj działanie następującego skryptu:

    #!/bin/bash
    (i=0
    while read line; do
    let i++
    lines1[$i]=$line
    #echo $i "  " ${lines1[$i]}
    done</etc/hosts
    )
    echo "XXX"${lines1[3]}"YYY"
    
  4. Porównaj działanie powyższych skryptów i odpowiedz na pytanie, dlaczego drugi i trzeci wypisuje tylko

    # XXXYYY
    

    Jak można temu zaradzić? Przeanalizuj działanie skryptu:

    #!/bin/bash
    i=0
    cat /etc/hosts | (while read line; do
    let i++
    lines2[$i]=$line
    # echo $i "  " ${lines2[$i]}
    done; declare -p lines2 > .bash_array)
    
    . .bash_array
    echo "XXX"${lines2[3]}"YYY"