Это приказ: pdc status -a 2>&1 | grep 'okay' Это дает следующий результат
[okay ]: you are currently listening: 33[okay ]: you are currently listening: 22[okay ]: you are currently listening: 11
Я написал эту команду в файле сценария оболочки. Но я хочу сохранить выходные данные этой команды в массиве для некоторой обработки каждого значения индекса в массиве.
Как я могу сохранить выходные данные этой команды в массиве?
Прежде всего, вам не обязательно нужен массив, для обработки вывода построчно вы можете сделать:
pdc status -a 2>&1 | grep 'okay' | while read line; do somecommand "$line"; done
Если вам действительно нужен массив, Гленн Джекман уже отдал вы лучший способ сделать это, но вот другой подход:
#!/bin/bashIFS=$'\n'array=($(pdc status -a 2>&1 | grep 'okay'))
Объяснение:
$IFS=$'\n' : $IFS это баш разделитель полей ввода, установив для него только символ новой строки (\n) гарантирует, что ваши выходные строки не будут разделены пробелами, так что вы можете сохранить каждую строку как отдельный элемент массива. Без этого каждый слово из выходных данных вашей команды будет другой элемент.
В зависимости от того, что вы хотите сделать, может быть хорошей идеей сохранить старое значение $IFS и восстановите его после считывания массива: