Cut работает с эхом, но не без него

Cut работает с эхом, но не без него

Итак, я пытаюсь извлечь вывод, похожий на

x=($discover nginx --human=nood)

что дает мне вывод вроде

i-03099 nginx IP noodlefish pip b4b966d280546c6b070f5f952c281d3294308048

Далее я хочу извлечь столбец pip в другую переменную. Когда я это сделаю

echo "$x" | cut -f6

Я получаю желаемый результат, но когда я пытаюсь...

y= "$x" | cut -f6 

Я получаю пустой вывод.

Пожалуйста, объясните мне, почему это происходит и как мне получить желаемый результат. Заранее спасибо.

решение1

Далее я хочу извлечь столбец pip в другую переменную. Когда я это сделаю

echo "$x" | cut -f6

Я получаю желаемый результат [...]

Это странно, потому что это не должно работать, поскольку

‘-f FIELD-LIST’
‘--fields=FIELD-LIST’
     Select for printing only the fields listed in FIELD-LIST.  Fields
     are separated by a TAB character by default.  Also print any line
     that contains no delimiter character, unless the ‘--only-delimited’
     (‘-s’) option is specified.

-fдолжно работать только в том случае, если поля разделены символом TAB, если не -dуказано иное.

Если вы хотите извлечь поле после слова pip, такой скрипт у меня работает

x="i-03099 nginx IP noodlefish pip b4b966d280546c6b070f5f952c281d3294308048"

y=$(echo -n "$x" | cut -d ' ' -f 6 -)

echo "$y"

решение2

Используйте следующую команду

y=`echo $x |cut -f6`

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