Как я могу прочитать файл в сценарии оболочки, а затем назначить каждую строку переменной, которую я могу использовать позже ?, (я думаю, чтобы загрузить настройку по умолчанию из файла)
я уже пытаюсь :
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
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а затем использовать его с помощью . /path/to/config.
Пример default.cfg:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
[d3 ] Пример default.cfg : #!/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[*]} - размер массива.)
Узнайте больше о массивах в bash здесь.
для использования в конфигурации это, наверное, простой для определения параметров В файле конфигурации в синтаксисе bash и позже источник его помощью . /path/to/config.
пример по умолчанию.cfg следующее:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
пример по умолчанию.cfg в:
#!/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[*]} - Размер массива).
подробнее о массивах в bash здесь.
для использования в конфигурации это, наверное, простой для определения параметров В файле конфигурации в синтаксисе bash и позже источник его помощью . /path/to/config.
пример по умолчанию.cfg следующее:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
пример по умолчанию.cfg в:
#!/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[*]} - Размер массива).
подробнее о массивах в bash здесь.
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а затем использовать его с помощью . /path/to/config.
Пример default.cfg:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
Пример default.cfg :
#!/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[*]} - размер массива.)
Узнайте больше о массивах в bash здесь.
для использования в конфигурации это, наверное, простой для определения параметров В файле конфигурации в синтаксисе bash и позже источник его помощью . /path/to/config.
пример по умолчанию.cfg следующее:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
пример по умолчанию.cfg в:
#!/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[*]} - Размер массива).
подробнее о массивах в bash здесь.
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а затем использовать его с помощью . /path/to/config.
Пример default.cfg:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
Пример default.cfg :
#!/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[*]} - размер массива.)
Узнайте больше о массивах в bash здесь.
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а затем использовать его с помощью . /path/to/config.
Пример default.cfg:
parameter_a=100
parameter_b=200
parameter_c="Hello world"
Пример default.cfg :
#!/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[*]} - размер массива.)
Узнайте больше о массивах в bash здесь.
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а позже использовать его с помощью . /path/to/config
.
Пример default.cfg :
parameter_a = 100 parameter_b = 200 parameter_c = "Hello world "
Пример script.sh :
#! / bin / bash # указать конфигурацию по умолчанию. /path/to/default.cfg echo $ parameter_a echo $ parameter_b echo "$ parameter_c" ...
Если вам не нравится этот подход, вы также можете прочитать строки в массив:
при чтении строки do array + = ("$ line") done & lt; some_file
Чтобы получить доступ к элементам, которые вы затем использовали бы $ {array [index]}
, например:
для (( i = 0; i & lt; $ {# array [*]}; i ++)) do echo "$ {array [i]}" done
(Где $ {# array [*]}
- размер массива.)
Подробнее о массивах в bash здесь .
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а позже использовать его с помощью . /path/to/config
.
Пример default.cfg :
parameter_a = 100 parameter_b = 200 parameter_c = "Hello world "
Пример script.sh :
#! / bin / bash # указать конфигурацию по умолчанию. /path/to/default.cfg echo $ parameter_a echo $ parameter_b echo "$ parameter_c" ...
Если вам не нравится этот подход, вы также можете прочитать строки в массив:
при чтении строки do array + = ("$ line") done & lt; some_file
Чтобы получить доступ к элементам, которые вы затем использовали бы $ {array [index]}
, например:
для (( i = 0; i & lt; $ {# array [*]}; i ++)) do echo "$ {array [i]}" done
(Где $ {# array [*]}
- размер массива.)
Подробнее о массивах в bash здесь .
Для целей конфигурации, вероятно, проще всего определить параметры в файле конфигурации в синтаксисе bash, а позже использовать его с помощью . /path/to/config
.
Пример default.cfg :
parameter_a = 100 parameter_b = 200 parameter_c = "Hello world "
Пример script.sh :
#! / bin / bash # указать конфигурацию по умолчанию. /path/to/default.cfg echo $ parameter_a echo $ parameter_b echo "$ parameter_c" ...
Если вам не нравится этот подход, вы также можете прочитать строки в массив:
при чтении строки do array + = ("$ line") done & lt; some_file
Чтобы получить доступ к элементам, которые вы затем использовали бы $ {array [index]}
, например:
для (( i = 0; i & lt; $ {# array [*]}; i ++)) do echo "$ {array [i]}" done
(Где $ {# array [*]}
- размер массива.)
Подробнее о массивах в bash здесь .
массив + = («$ line»)
, а не array [$ {# array [*]}] = "$ line"
, или если один должен поддерживать bash старше v3.1, array [i ++] = $ line
(где вы обязательно установите i = 0
до цикла, конечно).
– geirha
10 March 2011 в 20:13
IFS = read -r
, чтобы избежать удаления удаляемых вкладок / пробелов. Сравните printf & quot; \ thello \n world \n & quot; | при чтении строки -r; do echo & quot; $ line & quot ;; done
и printf \ \ thello \n world \n & quot; | при чтении IFS строки -r; do echo & quot; $ line & quot ;; сделано
– Sergiy Kolodyazhnyy
1 November 2017 в 03:58
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
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
c = 0 # counter # чтение целого файла в цикле, в то время как read line do textArray [$ c] = $ line # строка хранения c = $ (expr $ c + 1) # увеличение счетчика на 1 done & lt; $ FILE # get length of array len = $ (expr $ c - 1) # использовать для цикла для обращения к массиву для ((i = $ len; i & gt; = 0; i--)); do echo $ {textArray [$ i]} done
c = 0 # counter # чтение целого файла в цикле, в то время как read line do textArray [$ c] = $ line # строка хранения c = $ (expr $ c + 1) # увеличение счетчика на 1 done & lt; $ FILE # get length of array len = $ (expr $ c - 1) # использовать для цикла для обращения к массиву для ((i = $ len; i & gt; = 0; i--)); do echo $ {textArray [$ i]} done
c = 0 # counter # чтение целого файла в цикле, в то время как read line do textArray [$ c] = $ line # строка хранения c = $ (expr $ c + 1) # увеличение счетчика на 1 done & lt; $ FILE # get length of array len = $ (expr $ c - 1) # использовать для цикла для обращения к массиву для ((i = $ len; i & gt; = 0; i--)); do echo $ {textArray [$ i]} done
"$ foo"
, а не $ foo
. См. [D0] mywiki.wooledge.org/Arguments
– geirha
10 March 2011 в 20:52