Parece que isso deve funcionar, exceto que a saída de lsusb
contém dois pontos após o número do dispositivo:
$ lsusb -d 1d6b:0002
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Portanto, a variável devis
conteria isso, e o resultado final seria que você tentaria acessar /dev/bus/usb/001/001:
com os dois pontos.
Você pode se livrar do cólon final com a expansão de supressão de sufixo, assim:
devis=${devis%:}
Outra maneira de fazer isso apenas no shell (sem awk
) seria apenas read
da saída de lsusb
. Isso leva apenas a primeira linha lsusb
outputs, pode haver mais se houver mais de um dispositivo correspondente.
Em cascas com substituição de processo:
read x buss x devis x < <(lsusb -d 04f9:0272)
devis=${devis%:}
chmod +w "/dev/bus/usb/$buss/$devis"
Ou com um pipe:
lsusb -d 04f9:0272 | {
read x buss x devis x
devis=${devis%:}
chmod +w "/dev/bus/usb/$buss/$devis"
}