Создание строк слов с разделителями пространства из вырезанного выражения

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

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

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

 102 304 503 442 

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

 myVariable="102 304 503 442" 

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

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

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

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

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

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

Вы можете сделать это с помощью bash , используя подстановку команд и затем расширение параметров.

Сначала сделайте вывод команды в переменной, используя команду substitution $() , а затем используйте расширение параметра, чтобы заменить все новые строки пробелами ${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) ) 

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