Генерация строк слов с пробелами в качестве разделителей из оператора cut

Генерация строк слов с пробелами в качестве разделителей из оператора cut

Я новичок в bash. Когда я запускаю следующую команду:

grep "type" /root/myFile | cut-d'=' -f2

Я получаю следующее:

102
304
503
442

Я хочу сохранить содержимое первой команды в переменной таким образом, чтобы содержимое переменной было эквивалентно ее объявлению следующим образом:

myVariable="102 304 503 442"

Я не знаю, как это сделать. Мне инициализировать myVariableпустой строкой и пройти по содержимому команды построчно и добавить его в myVariable с пробелами между ними или есть более простой способ сделать это с помощью bash?

решение1

Это можно сделать и с bashним самим, используя подстановку команд, а затем расширение параметров.

Сначала возьмите вывод команды в переменной, используя подстановку команд $(), а затем используйте расширение параметров, чтобы заменить все символы новой строки пробелами ${variable//$'\n'/ }:

$ myVariable=$(grep "type" /root/myFile | cut-d'=' -f2) 
$ myVariable=${myVariable//$'\n'/ }
$ echo $myVariable
102 304 503 442

Но для удобства повторного использования и чистоты лучше использовать массив:

myArray=( $(grep "type" /root/myFile | cut-d'=' -f2) )

и перебрать элементы массива обычным способом.

решение2

myVariable=`grep "type" /root/myFile | cut-d'=' -f2`

То, что находится между обратными кавычками (`), запускается, а вывод присваивается myVariable.

Если ваш текущий вывод разделен символами перевода строки ( \n), то вы можете заменить их пробелами, например tr:

myVariable=`grep "type" /root/myFile | cut-d'=' -f2`|tr '\n' ' '`

Примечание: Некоторые предпочитают использовать синтаксис $()вместо обратных кавычек, но оба варианта полезны, и когда у меня есть выбор, я использую обратные кавычки. Реальное преимущество наличия обоих вариантов заключается в том, что если вы хотите обрабатывать выполнение на двух уровнях, то выражение с обратными кавычками сначала будет отправлено в подоболочку, а затем $()будет выполнена его часть.

Связанный контент