Lê o arquivo no array

4

Como posso ler o arquivo no shell script, em seguida, atribuir cada linha a uma variável que eu possa usar mais tarde ,,, (Estou pensando em carregar uma configuração padrão do arquivo)

eu já tentei:

process (){

}

FILE=''
read -p "Please enter name of default file : " FILE

if [ ! -f $FILE  ]; then

    echo "$FILE : does not exists "
    exit 1
elif [ ! -r $FILE  ]; then

    echo "$FILE : can not read "
fi

exec 0<"$FILE"
n=0
while read -r line
do
   (assign each line to an variable) 
done
    
por moata_u 10.03.2011 / 08:06

2 respostas

10

Para fins de configuração, é provavelmente mais fácil definir os parâmetros no arquivo de configuração na sintaxe do bash e, posteriormente, usar o . /path/to/config .

Exemplo default.cfg :

parameter_a=100
parameter_b=200
parameter_c="Hello world"

Exemplo script.sh :

#!/bin/bash

# source the default configuration
. /path/to/default.cfg

echo $parameter_a
echo $parameter_b
echo "$parameter_c"

...

Se você não gosta dessa abordagem, você também pode ler as linhas em uma matriz:

while read line
do
    array+=("$line")
done < some_file

Para acessar os itens, você usaria ${array[index]} , por exemplo:

for ((i=0; i < ${#array[*]}; i++))
do
    echo "${array[i]}"
done

(Onde ${#array[*]} é o tamanho da matriz.)

Leia mais sobre matrizes no bash aqui .

    
por htorque 10.03.2011 / 09:14
0
c=0 # counter
# read whole file in loop
while read line
do
  textArray[$c]=$line # store line
  c=$(expr $c + 1) # increase counter by 1
done < $FILE
# get length of array
len=$(expr $c - 1 )

# use for loop to reverse the array
for (( i=$len; i>=0; i-- ));
do
  echo ${textArray[$i]}
done
    
por moata_u 10.03.2011 / 17:32