无法将包含空格的文件作为命令行参数传递给 Ubuntu Touch 中的短信发送 Python 脚本

无法将包含空格的文件作为命令行参数传递给 Ubuntu Touch 中的短信发送 Python 脚本

我可以使用以下命令通过 SMS 发送短信:

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

/ril_0SIM 卡/调制解调器在哪里,07123456789是电话号码,"iorem ipsum est"是需要发送的文本,最后0是(我认为)一个布尔值,用于确定脚本是否会请求传送报告。

这工作正常,并产生输出:

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

然而,这似乎不起作用:

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

我尝试了一些排列、反引号等等;它们都不起作用,并且都产生如下输出:

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是第二张 SIM 卡的位置(如果有的话),我猜其余的是堆栈跟踪?

不管怎样,这个方法效果很好:

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

所以我猜问题在于$()处理包含空格的输出的方式?

我已将内容粘贴/usr/share/ofono/scripts/send-smshttp://pastebin.com/u8gHMc5R(当然,源代码可以从 Ubuntu 下载,地址:http://packages.ubuntu.com/en/vivid/ofono-scripts)。

我真的不想弄乱原始的 Python 脚本(即使我懂一点 Python,但我不知道!),但如果没有我不知道的 shell 解决方案(也许是使用管道或 xargs 的东西?)我不会反对使用原始脚本或其他东西的另一个脚本的想法。

我的系统是运行 15.04 (r23) 的 BQ Aquaris。为了避免造成影响,我通过 ssh 运行所有这些命令,而不是将它们输入到手机中。

非常感谢您的帮助。哦,如果我应该在其他地方发布此内容,例如在 Stack Overflow 或类似的地方(因为都是 Python),请告诉我!

答案1

使用双引号括起命令替换。此外,在命令中要么使用单引号,要么使用双引号echo,无需同时使用两者:

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

相关内容