Как я могу прочитать файл в сценарии оболочки, а затем назначить каждую строку переменной, которую я могу использовать позже ,,, (думаю, чтобы загрузить настройки по умолчанию из файла)
я уже пробую:
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
В целях конфигурации является, вероятно, самым легким определить параметры в конфигурационном файле в синтаксисе удара и более позднем источнике это использование . /path/to/config
.
Пример default.cfg:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
Пример script.sh:
#!/bin/bash
# source the default configuration
. /path/to/default.cfg
echo $parameter_a
echo $parameter_b
echo "$parameter_c"
...
Если Вам не нравится тот подход, можно также считать строки в массив:
while read line
do
array+=("$line")
done < some_file
Для доступа к объектам, Вы затем использовали бы ${array[index]}
, например:
for ((i=0; i < ${#array[*]}; i++))
do
echo "${array[i]}"
done
(Где ${#array[*]}
размер массива.)
Читайте больше о массивах в ударе здесь.
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