Щоб призначити вивід команди масиву, потрібно використовувати заміну команди всередині присвоєння масиву. Для загальної команди command
це виглядає так:
arr=( $(command) )
У прикладі OP це звучало б так:
arr=($(grep -n "search term" file.txt | sed 's/:.*//'))
Внутрішній $()
запускає команду, тоді як зовнішній ()
викликає вихід як масив. Проблема цього полягає в тому, що він не буде працювати, коли вихідні дані команди містять пробіли. Щоб вирішити це, ви можете встановити IFS
на \n
.
IFS=$'\n'
arr=($(grep -n "search term" file.txt | sed 's/:.*//'))
unset IFS
Ви також можете вирішити потребу в sed, виконавши розширення кожного елемента масиву:
arr=($(grep -n "search term" file.txt))
arr=("${arr[@]%%:*}")