Да, это ловко называют security.debian.org
. Добавьте эту строку к Вашему /etc/apt/sources.list
:
deb ftp://security.debian.org/debian-security /updates main
Нет никаких официальных зеркал для security.debian.org
дизайном посмотрите, Почему там отдельное хранилище пакетов для обновлений системы защиты Debian?.
Много мест, которые имеют обязательный блок Прокси HTTP FTP в целом. Таким образом, нет многих ситуаций, где существует преимущество для использования FTP.
Если необходимо сохранить команду в переменной, не используйте строку, которая просто не может работать. Посмотрите Bash FAQ № 50. Используйте функцию или массив.
Ваша строка анализируется как присвоение var="bash createGnuploat.sh "${exp[j]}" ../Result/ 0"
сопровождаемый этими двумя словами ${arr[i]}
(который будет взят в качестве названия команды), и ${exp[j]}
(который будет первым и единственным аргументом команде). Проверьте подсветку синтаксиса в свой вопрос или в Вашего редактора, это показывает то, что в заключенной в кавычки строке.
Всегда используйте двойные кавычки вокруг подстановок переменных, например. "$foo"
. Иначе значение переменной разделяется на слова, которые интерпретируются как шаблоны шарика. (Опустите двойные кавычки в 0,01% случаев, где это - желаемое поведение.) Для массива, использовать "${foo[@]}"
иметь каждый элемент массива в отдельном слове ("${foo[*]}"
отдельное слово с элементами массива, разделенного пробелами; если Вы не учитываете кавычки, то каждый элемент повреждается в отдельные слова, которые интерпретируются как шаблоны шарика).
Вот Ваш отрывок, переписанный с помощью функции:
create_plot () {
bash createGnuploat.sh "${exp[$2]}" ../Result/ 0 "${arr[$1]}" "${exp[$2]}"
}
for j in "${!exp[@]}"
do
arr=([1]=mem [2]=gen [3]=usr)
for i in "${!arr[@]}"
do
create_plot "$i" "$j"
done
done
Для редких случаев, где имеет смысл использовать переменную типа массив вместо функции:
for j in "${!exp[@]}"
do
arr=([1]=mem [2]=gen [3]=usr)
for i in "${!arr[@]}"
do
var=(bash createGnuploat.sh "${exp[j]}" ../Result/ 0 "${arr[i]}" "${exp[j]}")
"${var[@]}"
done
done
Существуют несколько синтаксис и заключающие в кавычки проблемы в строке
$var="bash createGnuploat.sh "${exp[j]}" ../Result/ 0" ${arr[i]} ${exp[j]}
Вот более чистая версия сценария в Вашем вопросе:
for j in bloc ins rep op; do
for i in mem gen usr; do
bash createGnuploat.sh "$j" ../Result/ 0 "$i" "$j"
done
done
Я не знаю то, для чего аргументы, как предполагается, createGnuploat.sh
таким образом, необходимо будет проверить что сами.