
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 $x
e 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 discover
fará:
discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done
Alternativamente, em bash
um 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 discover
e cut
), portanto, os valores das variáveis são acessíveis após o loop.