O shell do Linux obtém o ID do dispositivo a partir da entrada do usuário

0

Então, estou trabalhando em um script de instalação para um programa que precisa do id do dispositivo do lsusb em sua configuração, portanto, estava pensando em fazer o seguinte:

$usblist=(lsusb)
#put the list into a array for each line.
#use the array to give the user a selection list usinging whiptail.
#from that line strip out the device id and vender id from the selected line.

A linha é a seguinte:

Bus 001 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial

Então eu quero apenas os 9 caracteres depois de "ID {espaço}"

    
por Martinn Roelofse 28.05.2018 / 09:53

2 respostas

0

Os primeiros erros que vejo são. Você escreveu $usblist=(lsusb | awk '{print $6}')

Você precisa remover o $ do início e adicionar um $ antes do ( . Algumas citações também ajudarão. ou seja,

usblist="$(lsusb | awk '{print $6}')"

    
por 28.05.2018 / 13:23
0

Basta usar, isso usa awk para imprimir o campo 6th , que no seu caso é o ID do dispositivo

usblist="$(lsusb | awk '{print $6}')"

Então você imprime qualquer campo que quiser, aqui está o mapeamento:

  • $ 1: ônibus
  • US $ 2,001
  • $ 3: dispositivo
  • $ 4: 004:
  • $ 5: ID
  • $ 6: 0665: 5161
  • $ 7: Cypress
  • US $ 8: semicondutor
  • US $ 9: USB
  • $ 10: para
  • $ 11: serial

Se você quiser imprimir mais de um campo, como nome, você pode fazer assim

usblist="$(lsusb | awk '{print $7,$8,$9}')"
    
por 28.05.2018 / 09:56

Tags