Amministratore Linux: lettura e scrittura su file

Sia la lettura che la scrittura su file in BASH possono essere eseguite con i redirector di input e output. Ci siamo imbattuti in ciascuno di essi negli script precedenti.

#!/bin/bash 
myFile = "myLines.txt"

while read -a FILENAME; 
   do
   
   if [ `echo $FILENAME | grep 004` ]; 
      then 
      echo "line was $FILENAME" >> LineFile.txt 
      break 
   fi
   
echo $FILENAME 
done < $myFile

Invece di fare eco al terminale, il nostro ramo condizionale ora fa eco a un file denominato LineFile.txt.

La lettura dai file è stata presentata in due modi, cat e read .readdi solito è sempre considerata una best practice. Mentrecatpassa solo i flussi di testo da un file. read implica che lo script legga un file effettivo e si assume la responsabilità della lettura di un file.

Lo script seguente legge di nuovo il file di testo, inserisce ogni riga in un array, quindi stampa l'array sul terminale.

#!/bin/bash 
myFile = "myLines.txt"
line = ()

while read -r FILELINE; 
   do 
   line+=($FILELINE) 
done < $myFile

for i in `seq 0 ${#line[@]}`; 
   do 
   echo $i " -> " ${line[$i]} 
done

Di seguito è riportato l'output.

0  ->  line001 
1  ->  line002 
2  ->  line003 
3  ->  line004 
4  ->  line005 
5  ->  line006 
6  ->  line007 
7  ->  line008 
8  ->  line009
9  ->  line010