Não é possível passar o arquivo contendo espaço em branco como argumento da linha de comando para o script Python de envio de SMS no Ubuntu Touch no Ubuntu Touch

1

Eu posso enviar mensagens de texto por SMS usando o comando:

$ /usr/share/ofono/scripts/send-sms /ril_0 07123456789 "iorem ipsum est" 0

Onde /ril_0 é o cartão SIM / modem, 07123456789 é o número de telefone, "iorem ipsum est" é o texto a ser enviado e o último 0 é (eu acho) um booleano determinando se o script solicitará um relatório de entrega.

Isso funciona bem e produz a saída:

Send message using modem /ril_0 ...
/ril_0/message_20C76858222F2CDF61342FC317BF53AC4B763441

No entanto, isso parece não funcionar:

$ echo '"iorem ipsum est"' > textfile
$ /usr/share/ofono/scripts/send-sms /ril_0 07123456789 $(cat textfile) 0

Eu tentei algumas permutações, backticks e assim por diante; Nenhum deles funciona e todos produzem uma saída como essa:

Send message using modem /ril_1 ...
Traceback (most recent call last):
  File "/usr/share/ofono/scripts/send-sms", line 31, in <module>
    mm.SetProperty("UseDeliveryReports", dbus.Boolean(int(sys.argv[3])))
ValueError: invalid literal for int() with base 10: '"iorem'

/ril_1 é onde o segundo cartão SIM estaria (se houvesse um), e eu acho que o resto é um rastreio de pilha?

Por que vale a pena, isso funciona bem:

$ echo '"iorem"' > textfile
$ /usr/share/ofono/scripts/send-sms /ril_0 07123456789 $(cat textfile) 0

Então, eu acho que o problema está no modo como $() manipula a saída contendo espaço em branco?

Eu colei o conteúdo de /usr/share/ofono/scripts/send-sms no link (e, claro, a fonte está disponível para download no Ubuntu, aqui < href="http://packages.ubuntu.com/en/vivid/ofono-scripts"> link ).

Eu realmente não quero mexer com o script Python original (mesmo se eu soubesse algum Python, o que eu não sei!), mas se não houver uma solução shell que eu não saiba (algo usando canos ou xargs, talvez?) Eu não seria contra a idéia de outro script que faz uso do original, ou algo assim.

Meu sistema é um BQ Aquaris rodando 15.04 (r23). Caso isso faça alguma diferença, estou executando todos esses comandos via ssh em vez de digitá-los no telefone.

Qualquer ajuda muito apreciada. Ah, e se eu deveria postar isso em outro lugar, por exemplo, no Stack Overflow ou algo assim por causa de todo o Python, por favor me avise!

    
por John 11.07.2015 / 16:54

1 resposta

0

Use aspas duplas para quebrar a substituição do comando. Além disso, use aspas simples ou use aspas duplas no comando echo , não é necessário usar os dois:

echo 'iorem ipsum est' > textfile
/usr/share/ofono/scripts/send-sms /ril_0 07123456789 "$(cat textfile)" 0
    
por kos 11.07.2015 / 16:58