Passando argumento de um shell script para uma nova sessão

1

Estou escrevendo um script para registrar dados seriais de uma porta USB em um arquivo e estou usando script e picocom para registrar os dados da seguinte forma:

sudo script -a -c 'sudo picocom /dev/ttyUSB0 | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/device1.log

que funciona bem e quero envolvê-lo em um script openPort para que eu possa chamar openPort device1 USB0 . Até agora eu tenho

sudo script -a -c 'sudo picocom /dev/tty"${2}" | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/${1}.log

que infelizmente não abre a porta COM. Eu acho que o problema é que script lança uma nova sessão que executa sudo picocom /dev/tty"{2}" em vez de usar o argumento passado de openPort . Existe uma maneira de passar o argumento corretamente?

    
por pavel 19.07.2017 / 14:13

1 resposta

2

Tudo dentro de aspas simples não é expandido, portanto, basta remover esse parâmetro das aspas:

sudo script -a -c 'sudo picocom /dev/tty'"${2}"' | ts "%Y-%b-%d %H:%M:%S10"' /usr/local/logs/${1}.log

A Shell cuidará da mesclagem de todas as partes.

    
por 19.07.2017 / 14:20