カットはエコーがあれば機能しますが、エコーがなければ機能しません

カットはエコーがあれば機能しますが、エコーがなければ機能しません

そこで私は次のような出力を抽出しようとしています

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

次のような出力が得られます

i-03099 nginx IP ヌードルフィッシュ 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-d別途設定しない限り、フィールドが TAB で区切られている場合にのみ機能します。

単語の後のフィールドを抽出したい場合は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`

関連情報