отображение массива в функции – не работает

Что мне здесь не хватает?

Я создал простой массив:

declare -a appArray=( "item1 -a -b" "item2 -c -d" ) 

Если я повторю это, я все вижу

 echo ${appArray[@]} > item1 -a -b item2 -c -d 

Затем я создаю функцию следующим образом:

 fc_DEBUG () { if [ $1 -eq 1 ] ; then echo $2; fi; }; 

Он предназначен для синтаксиса в сценарии bash, и если я установлю переменную DEBUG, он будет повторять текст назад. Поэтому я могу использовать его во всем скрипте без необходимости вручную добавлять / удалять вещи.

Он отлично работает с базовыми данными: например

 fc_DEBUG $DEBUG "This is DEBUG text" 

Если я называю это с помощью массива, я получаю только часть массива.

 fc_DEBUG $DEBUG "${appArray[@]}" > item1 -a -b 

One Solution collect form web for “отображение массива в функции – не работает”

${appArray[@]} расширяется до fc_DEBUG . Таким образом, второй аргумент, который видит функция, является первым из массива. Чтобы быть явным, три аргумента fc_DEBUG видят, являются

 $DEBUG "item1 -a -b" "item2 -c -d" 

(замените $ DEBUG словами, полученными от оператора split + glob, примененного к фактическому значению $ DEBUG (поскольку вы забыли его процитировать)). С технической точки зрения массив передается по значению, а не по ссылке.

 fc_DEBUG () { if [ "$1" -eq 1 ] ; then shift echo "$@" fi } 

Теперь первый аргумент удаляется из списка аргументов со shift , а остальные аргументы печатаются.

Вызовите его с помощью указанного массива:

 fc_DEBUG "$DEBUG" "${appArray[@]}" 
  • Настройка Exim на Debian для аутентификации с использованием только пароля?
  • Привод USB3, подключенный к ПК, заставляет компьютер зависать «приветствовать,
  • Какую версию debian я должен скачать?
  • Установка старых версий PHP на Debian Jessie
  • Обновления Debian Jessie
  • Как узнать сервер имен, который разрешает определенное имя хоста
  • Debian Squeeze: подключение к A2DP (bluetooth) через командную строку
  • Почему Debian установил оболочку входа в систему для синхронизации пользователя с / bin / sync?
  • У экземпляра Debian два ядра после установки драйверов Intel PCIe SSD - один с черным экраном
  • localhost vs hostname
  • Как исправить пустые / etc / sudoers как root?
  • Interesting Posts

    CUPS прекращает печать через некоторое время

    Не удалось загрузить Beaglebone Green с Debian 7.8

    Как заставить TCP-пакеты использовать конкретную сетевую карту

    Сдвиг-пространство меньше

    Если выражение в shell-скрипте работает только полурабочее

    Есть ли параметр подсчета повторов для svscan?

    Удаление или повторная установка сломанной упаковки

    Этот код не работает. (Попытка объявить значения массива в цикле for и выполнять на них математические функции)

    grep с сортировкой по столбцу

    xfce: Как выровнять значки на правой стороне рабочего стола?

    Как включить команду Diff в скрипт bash с подсказкой

    Жесткий диск автоматически не переходит в режим ожидания

    Как я могу запустить системный блок при приостановке до отключения сети?

    httpd (apache2) сервер не анализирует * .php файлы, а отображает их как текст с установленным php-модулем в arch-linux

    Статический ключ OpenVPN ip смысл / порядок?

    Linux и Unix - лучшая ОС в мире.