Uma maneira simples, se não a mais eficiente, é:
deviceid="$(xinput | grep "TouchPad" | grep -oE 'id=[^ ]+' | cut -d= -f2)"
Você pode se referir a "$deviceid"
em seu (s) script (s).
Trabalhando para ver como isso funciona, primeiro tomo o comando que você iniciou para obter a linha de entrada para analisar. Em seguida, uso grep -o
, que retorna apenas os dados correspondentes, em vez da linha inteira, e -E
, que permite uma sintaxe mais sucinta. A expressão /id=[^ ]+/
significa "um símbolo i
, a d
, um símbolo =
e um ou mais caracteres que não são um espaço. Isso extrai id=12
. Então, envio que para cut
, que eu digo para dividir a entrada em =
símbolos (com o -d
(para d elimitador)), e pegue o segundo campo, que é o 12
que você queria.
Tudo isso é executado em um subshell, cuja saída é usada como o valor da variável.