apt source foo
найдет исходный пакет, содержащий двоичный пакет foo
, загрузит его и извлечет в текущий каталог. (Подробнее см. на справочной странице apt-get
.)
dget foo
загрузит двоичный пакетfoo
в текущий каталог. Он не загружает исходный пакет.
Получив URL, dget
загружает соответствующий файл; кроме того, если загруженный файл является файлом .dsc
или .changes
, он загрузит другие файлы, на которые есть ссылки, и извлечет полученный исходный пакет.
Мне кажется, у вас проблемы с использованием косвенных переменных.
Чтобы получить доступ к переменной массива, называемой:
a=(one two t33 f44)
вам нужна косвенная переменная, которая содержит только то, что вы написали бы внутри конструкции ${...}
. Чтобы получить значение ${a[2]}
, вам нужна косвенная переменная, установленная в:
indirect=a[2]
А затем используйте его:
$ echo "<${!indirect}>"
<t33>
Я считаю, что вы должны проверить, что находится в indirect_var='${'${st}'[@]}'
.
Возможно:indirect_var="${st}[@]"
Ваше описание недостаточно ясно, чтобы быть уверенным.
Но имейте в виду, что изменение переменной st
само по себе не приведет к доступу к другим переменным/значениям. Вы должны изменить значение indirect_var
, прежде чем оно заработает.
Попробуйте этот скрипт:
#!/bin/bash
mat_1=(ServerAB ServerFR ServerPE ServerAM ServerHU)
mat_2=(SeAB SeFR SePE SeAM SeHU)
st="mat_1";
#indirect_var='${'${st}'[@]}'
indirect_var="${st}[@]"
#(Please, see the "--Desired Ouput Section--" in comments)
#----- What is Hapenning now at output ----
echo "Values of mat_1 : ${mat_1[@]}"
echo "Indirect value of mat_1: ${!indirect_var}"
st=mat_2
echo "This WONT work"
echo "Values of mat_2 : ${mat_2[@]}"
echo "Indirect value of mat_2: ${!indirect_var}"
st=mat_2
indirect_var="${st}[@]"
echo "This DOES work"
echo "Values of mat_2 : ${mat_2[@]}"
echo "Indirect value of mat_2: ${!indirect_var}"
Возможно, вам следует забыть о st
и обновить indirect_var
по мере необходимости.
Кроме того, нет никакого способа получить количество из косвенной переменной, есть не синтаксис, подобный echo "${!#indirect_var}"
, но вы можете прекрасно справиться с:
indirect_var="#mat_1[@]"
echo "${!indirect_var}"
Возможно, определите count_indirect_var="#$indirect_var"
для подсчета.
Удачи!.