这是mmcli手册中的一个示例:
mmcli -m 0 --messaging-create-sms="text='Hello world',number='+1234567890'"如何解析它的细节还不清楚,描述说只有--messaging-create-sms=['KEY1=VALUE1,...'],并列出了已知的密钥。text键的值是UTF-8消息文本。
这是我的脚本中的对应行:
mmcli -m $modem --messaging-create-sms="text='$msg',number='$num'"问题是消息不能包含一个单引号。错误是:
'GDBus.Error:org.freedesktop.ModemManager1.Error.Message.InvalidPduParameter:未能将消息文本转换为GSM‘
现在我要用双古特代替它。我试着用反斜杠逃跑,但没有用。你能帮忙吗?
发布于 2020-05-16 19:26:24
可能进行解析的代码是这里:
/* Expecting input as:
* key1=string,key2=true,key3=false...
* Strings may also be passed enclosed between double or single quotes, like:
* key1="this is a string", key2='and so is this' */
gboolean mm_common_parse_key_value_string(...)因此,如果文本中没有双引号和单引号,则可以在参数中使用相反的引号,例如:
case "$msg" in
*\'*\"*|*\"*\'*) echo oops; exit 1 ;;
*\'*) q=\" ;;
*\"*) q=\' ;;
esac
... --messaging-create-sms="text=$q$msg$q,number='$num'"发布于 2023-04-11 23:22:00
现在有点晚了,但我最近遇到了同样的问题。我需要支持可以同时包含单引号和双引号的消息,这在当前的字符串解析中是不可能的。我想我应该自己修复它,并对存储库这里进行分叉,并添加了一个命令行选项--messaging-create-sms-with-text,它允许您从文件(可以是stdin)中读取消息文本。该选项的工作方式类似于--messaging-create-sms-with-data。
我已经完成了一个拉请求,但是这个项目似乎不是很活跃(最后一次提交是在2021年11月4日)。我们走着瞧。
https://unix.stackexchange.com/questions/587105
复制相似问题