Создайте переменную, равную строкам в файле, и присвойте переменным значение из файла последовательно - PullRequest
0 голосов
/ 01 апреля 2019

Я хочу создать число переменных, равное строкам в файле, и назначить каждой из этих переменных значение из файла последовательно.

Say,
file1 содержит device1 device2 device3 .....
file2 содержит olddevice1 olddevice2 olddevice3 .....

Я хочу значения, как когда я делаю echo $A = device1 Аналогично echo $B = device2 и echo $Z = device26

Я попробовал цикл for и даже массив, но не смог пройти через него.

Я пробовал что-то вроде ниже:

iin=0
var=({A..Z})
for jin in `cat file1`
do
   array[$iin]="$var=$jin";
   iin=$(($iin+1));
   var="$(echo $var | tr '[A-Y]Z' '[B-Z]A')"
   printf '%s\n' "${array[@]}"
done`

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

С bash ( v4 и более поздними версиями) примерно такой код mapfile должен работать:

mapfile -O 1 -t  array1   < file1  
mapfile -O 1 -t  array2   < file2 
# output line #2 from both files
echo "${array1[2]}" "${array2[2]}" 
# output the last line from both files
echo "${array1[-1]}" "${array2[-1]}" 

Примечания: mapfile просто загружаетсямассив, но с несколькими дополнительными параметрами.

  • -O 1 устанавливает индекс массива для начала с 1 вместо значения по умолчанию 0;в этом нет необходимости, но это облегчает чтение кода.
0 голосов
/ 01 апреля 2019

Я полагаю, что вы упускаете суть: переменные имеют имена исправлений в языках программирования, например $A, $B, ..., $Z: во время программирования вам нужно указать эти переменные внутри вашей программы, вы не могу ожидать, что ваша программа изобретет свои собственные переменные.

То, что вы ищете, это коллекции, такие как массивы, списки, ...:
Вы создаете коллекцию A и можете добавлять к ней значения (A[n]=value_n или A.SetAt(n, value_n), ..., в зависимости от типа используемой коллекции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...