Compreendendo a saída de cut -f

Compreendendo a saída de cut -f

Obrigado pela sua paciência, sou novo no Linux e gostaria de ajuda para entender como posso analisar a saída do comando cut.

Então, atualmente eu tenho uma variável

x=$(discover nginx --human=nood | cut -f1,6)

Então, minha saída echo "$xé uma lista de gostos

endereço IP da instânciaID

No meu programa, quero executar um loop for em cada linha de x e extrair a primeira e a segunda variáveis ​​separadamente. Ex: se fosse um array a[0] = instanceID e a[1]= IPAdderess

Por favor, alguém pode me orientar como extrair os elementos separadamente. Eu sei que posso fazer um loop $xe fazer um corte nele, mas estou procurando entender se existe uma maneira melhor de fazer isso.

Responder1

Para isso, você não precisa armazenar os dados em uma variável, um loop sobre a saída de discoverfará:

discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done

Alternativamente, em bashum shell que entende substituições de processos ( <( ... )):

while read -r instanceID IPAddress; do
    # Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )

A diferença entre os dois só é visível se você quiser carregar os valores de alguma variávelfora do laço. No primeiro exemplo, o loop será executado em um subshell e, portanto, você não usará nenhum valor de variável definido dentro do loopdepoiso loop (eles existem em seu próprio ambiente local).

No segundo exemplo, nenhum subshell está envolvido (exceto aquele que executa a substituição do processo com discovere cut), portanto, os valores das variáveis ​​são acessíveis após o loop.

informação relacionada