Ах. Ты делаешь доброе дело. Я использую LXDE и так LXterminal-это один я использую больше всего. Попытка `Эхо -э "из к\ф" в терминале не очищает экран, который объясняет, почему он не работает. Я пробовал xterm или LXterminal, а терминал я получаю, когда я иду ПНО-альт-Ф1, который определяет как "Linux" accoring к $срок, и все три не работают. dumpprivkey <address>, Эй получить ваш закрытый ключ, можно вымести закрытым ключом баланс на любой адрес, используя Электрум, blockchain.info ..и т. д Ли командной оболочки работать без тайм-аута?

Краткое изложение вопроса:

Есть встроенный Баш способ, чтобы подсчитать количество элементов в bash массив, где имя массива является динамическим (т. е. храниться в переменной), не прибегая к делать полностью копию массива или с помощью функции eval?

Более подробная информация:

Используете bash подстановка, можно сделать следующее:

  • Определить длину массива:
    myArr=(А Б); Эхо ${#myArr[@]}.
  • Косвенно ссылаться на переменную по имени:
    Имя=аргумент myVar; Эхо ${!Имя}
    (это также относится и к элементам массива):
    Имя=myArr[1]; Эхо ${!Имя}

Но если имя массива хранится в другой переменной, как можно определить количество элементов в массиве? (Можно считать это сочетание двух описанных выше параметра замен.) Например:

myArr=(А B С D)
Имя=myArr
# Получаем количество элементов в массиве косвенно ссылаются по имени.
граф=${#$имя[@]} # этот синтаксис является недопустимым. Как правильно?

Ниже приведены несколько попыток, что все плохо:

 # Настройки для следующей попытки:
 myArr=(А B С D)
Имя=myArr
 ВЫРАЖЕНИЕ1=$имя[@] # т. е. ВЫРАЖЕНИЕ1='myArr[@]'
 ВЫРАЖЕНИЕ2=#$имя[@] # т. е. ВЫРАЖЕНИЕ2='#myArr[@]'

 # Неудачных попыток получения длины массива косвенно:
 1. граф=${#$имя[@]} # ошибка: Баш: ...: плохая замена
 2. счетчик=${#!ВЫРАЖЕНИЕ1} # ошибка: Баш: !Выражение}: событие не найдено
 3. счетчик=${#\!ВЫРАЖЕНИЕ1} # ошибка: Баш: ...: плохая замена
 4. счетчик=${!#ВЫРАЖЕНИЕ1} # ошибка: Баш: ...: плохая замена
 5. граф=${!ВЫРАЖЕНИЕ2} # возвращает значение null

Я также попробовал некоторые другие варианты выше, но пока не нашли ничего, что работает без либо: (a) создание копии массива или (B) с помощью функции eval.

Методы Работы:

Существует несколько способов решения этой, которая, вероятно, не оптимальная (но поправьте меня, если я ошибаюсь):

Способ 1: копируем массив

Назначить массива в другой (статически-имени) переменной и получить количество элементов в нем.

ВЫРАЖЕНИЕ=$ИМЯ[@]
arrCopy=( "${!Выражение}" )
граф=${#arrCopy}

Способ 2: Используйте функцию eval

Выражение="считать=\${#$имя[@]}" # т. е. считать=${myArr[@]}'
ивал $ВЫРАЖ
# Теперь посчитайте значение длины массива

Резюме:

Есть ли встроенный метод (т. е. синтаксис подстановки параметра) в Bash для определения длины массива косвенно? Если нет, то какой самый эффективный способ сделать это? Я предполагаю, что это ивала выше способом, но есть безопасности или проблемах с производительностью ивала?