#arrays #bash #shell #sh #filemap
#массивы #bash #оболочка #sh #файловая карта
Вопрос:
Как я могу сопоставить значения, полученные из имени столбца, с массивом, который я могу позже использовать в своем скрипте bash?
------------------------------ ---------- ----------- ---------
| name | status | update | version |
------------------------------ ---------- ----------- ---------
| enable-jquery-migrate-helper | inactive | none | 1.0.1 |
| gravityforms | inactive | none | 2.4.17 |
| gutenberg | inactive | none | 8.8.0 |
| redirection | inactive | none | 4.8 |
| regenerate-thumbnails | inactive | none | 3.1.3 |
| safe-svg | inactive | none | 1.9.9 |
| weglot | inactive | none | 3.1.9 |
| wordpress-seo | inactive | available | 14.8 |
------------------------------ ---------- ----------- ---------
Я уже пробовал следующее, но это позволило бы сохранить только название заголовков в таблице:
IFS=$'n' read -r -d '' -a my_array < <( wp plugin list --status=inactive --skip-plugins amp;amp; printf '' )
echo $my_array
name status update version
После того, как я извлек значения, я хочу перебрать их, чтобы добавить в массив
Комментарии:
1. В оболочке нет многомерных массивов. Как вы собираетесь отобразить 2D-таблицу в массив Bash?
2. @JeroenSmink : Я не понимаю, как должен выглядеть результирующий массив в вашем случае, но, похоже, ваша главная задача здесь — проанализировать входную строку, а не создавать массив. Поскольку ваши поля имеют одинаковый размер для каждой строки, вы могли бы использовать простой выбор подстроки. В качестве альтернативы, вы могли бы сопоставить шаблон для разделителя столбцов, который, по-видимому, представляет собой вертикальную полосу.
Ответ №1:
Лучше использовать формат вывода CSV, а не формат таблицы по умолчанию, если вы намереваетесь отобразить результат с помощью командной строки или скрипта awk:
wp plugin list --status=inactive --skip-plugins --format=csv
который будет выводить это:
name,status,update,version
enable-jquery-migrate-helper,inactive,none,1.0.1
gravityforms,inactive,none,2.4.17
gutenberg,inactive,none,8.8.0
redirection,inactive,none,4.8
regenerate-thumbnails,inactive none,3.1.3
safe-svg,inactive,none,1.9.9
weglot,inactive,none,3.1.9
wordpress-seo,inactive,available,14.8
Комментарии:
1. @JeroenSmink Не пропустите
--format=json
, это было бы красиво и надежно обработано любым синтаксическим анализатором JSON на разных языках, таких как: python, perl или дажеjq
для оболочки.2. Да, я добавляю пакет JQ в свой образ Docker, пока мы говорим. уже найден отличный способ отфильтровать значения с помощью ключа name