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