выполненный избивают сценарий

Да, это ловко называют security.debian.org. Добавьте эту строку к Вашему /etc/apt/sources.list:

deb ftp://security.debian.org/debian-security /updates main

Нет никаких официальных зеркал для security.debian.org дизайном посмотрите, Почему там отдельное хранилище пакетов для обновлений системы защиты Debian?.

Много мест, которые имеют обязательный блок Прокси HTTP FTP в целом. Таким образом, нет многих ситуаций, где существует преимущество для использования FTP.

1
18.09.2012, 02:40
2 ответа

Если необходимо сохранить команду в переменной, не используйте строку, которая просто не может работать. Посмотрите 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
1
27.01.2020, 23:29

Существуют несколько синтаксис и заключающие в кавычки проблемы в строке

$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 таким образом, необходимо будет проверить что сами.

2
27.01.2020, 23:29
  • 1
    проблема не находится в createGnuploat.sh не аргументы, я могу выполнить его непосредственно с теми же аргументами. Но в моем случае я хочу знать, как работать, команда (колотите createGnuploat.sh "$j"../Result/0 "$j" "$i"), записал в файле удара? –  user15992 17.09.2012, 18:31
  • 2
    @user15992 Ваш вопрос и вставляет описание того, что Вы пытаетесь выполнить. –  jw013 17.09.2012, 18:40

Теги

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