Генерация содержимого, хранящегося в динамической переменной в сценарии оболочки

Для пакета нет записи sources.list, поскольку он размещен в репозиториях по умолчанию в Debian. Вы должны быть в состоянии бежать

sudo apt install libpyside-dev

и получите соответствующую версию для вашего дистрибутива.

Если вы используете Buster, вы не сможете установить libpyside-devв настоящее время, если вы также не добавите unstableв свои репозитории, потому что пакет был удален из Buster(Qt4 удаляется); подробности см. вики Debian . В частности, вы должны закрепить свои репозитории, чтобы пакеты из Buster имели приоритет над пакетами из Sid; добавить следующее к/etc/apt/preferences:

Package: *
Pin: release a=testing
Pin-Priority: 900

Package: *
Pin: release a=unstable
Pin-Priority: 800

0
14.03.2020, 17:50
1 ответ

Итак, во-первых, каждый раз, когда вы делаете что-то вроде ${var_${iter_val}}, то есть пытаетесь добавить число к имени переменной, вместо этого вы должны использовать массив:

arr=(a b c)
arr[1]=x
i=1
echo "${arr[i]}"

Если вам нужно что-то индексировать с помощью строк , используйте ассоциативный массив(declare -A arraynameв Bash ).

Комбинация тех, которые, скажем, имеют разные свойства для некоторых «объектов» в массиве, сложнее. Вы можете использовать два отдельных массива, а затем использовать foo[i]и bar[i].

Если вам по-прежнему нужно косвенно указывать на эти массивы по имени, вам нужна ссылка на имя.

foo=(a b c)
bar=(x y z)
declare -n arrname=foo
echo "${arrname[i]}"

Из вашего кода я не могу сказать, какой именно должна быть ваша структура данных, поэтому сложно дать ответ только для этого сценария.


Пытаясь переписать ваш пример, вы могли бы сделать что-то вроде этого:

varnames=()
varnames[1]=msd_ext
varnum=1
msd_ext_len=24

declare -n srcvar="${varnames[varnum]}_len"
declare -n dstvar=final_count
dstvar=$srcvar

echo $final_count

Это по-прежнему требует использования массива для varnames, так как вложенное расширение ${var_$foo}на самом деле не работает.

См.:

1
28.04.2021, 23:20

Теги

Похожие вопросы