Чтение файла строка за строкой и присвоение значения переменной в цикле - PullRequest
0 голосов
/ 30 января 2020

У меня есть текстовый файл, содержимое которого указано ниже.

CAT,DOG
SPARROW,PIGEON
RAT,BAT
TENNIS,FOOTBALL

Кроме того, у меня есть скрипт оболочки, который читает этот текстовый файл построчно, присваивает значение переменной и выполняет определенные операторы.

Например:

1-я строка: CAT, DOG

переменная1: переменная CAT2: DOG

Печать переменной1, печать переменной2

, затем код переходит ко 2-й строке, 2-я строка: SPARROW, PIGEON

variable1: SPARROW variable2: PIGEON

Print variable1 print переменная2

И продолжается до EOF.

Пожалуйста, помогите мне создать код для этого. Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Здесь

while IFS=, read -r var1 var2; do 
  printf 'variable1: %-10s variable2: %s\n' "$var1" "$var2"
done < file.txt

Если вы хотите, чтобы var1 и var2 сохранялись / существовали вне l oop, тогда используйте массив.

var1=()
var2=()

while IFS=, read -r column1 colum2; do 
    var1+=("$column1") var2+=("$column2")
    printf 'variable1: %-10s variable2: %s\n' "$colum1" "$column2"
done < file.txt

За пределами l * Массивы 1016 * ${var1[@]} и ${var2[@]} сохраняются / существуют

-10 только для красивых отступов, значения сохраняются в $var1 и $var2

0 голосов
/ 31 января 2020

while IFS = "," read variable1 variable2 do echo "Значение 1-й переменной: $ {variable1}, тогда как значение 2-й переменной: $ {variable2}" done

Это дает мне вывод, подобный:

Значение 1-й переменной: CAT, тогда как значение 2-й переменной: DOG

Но я хочу, чтобы этот код работал в al oop до EOF. Но это не работает.

Я хочу вывод как:

Значение 1-й переменной: CAT, тогда как значение 2-й переменной: DOG Значение 1-й переменной: SPARROW, тогда как значение 2-й переменной: PIGEON Значение 1-й переменной: RAT, тогда как значение 2-й переменной: BAT Значение 1-й переменной: TENNIS, тогда как значение 2-й переменной: FOOTBALL

...