首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发送带有单引号字符的SMS文本时出现问题- mmcli (ModemManager)

发送带有单引号字符的SMS文本时出现问题- mmcli (ModemManager)
EN

Unix & Linux用户
提问于 2020-05-16 18:11:47
回答 2查看 457关注 0票数 1

这是mmcli手册中的一个示例:

代码语言:javascript
复制
mmcli -m 0 --messaging-create-sms="text='Hello world',number='+1234567890'"

如何解析它的细节还不清楚,描述说只有--messaging-create-sms=['KEY1=VALUE1,...'],并列出了已知的密钥。text键的值是UTF-8消息文本。

这是我的脚本中的对应行:

代码语言:javascript
复制
mmcli -m $modem --messaging-create-sms="text='$msg',number='$num'"

问题是消息不能包含一个单引号。错误是:

'GDBus.Error:org.freedesktop.ModemManager1.Error.Message.InvalidPduParameter:未能将消息文本转换为GSM‘

现在我要用双古特代替它。我试着用反斜杠逃跑,但没有用。你能帮忙吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-05-16 19:26:24

可能进行解析的代码是这里

代码语言:javascript
复制
/* 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(...)

因此,如果文本中没有双引号和单引号,则可以在参数中使用相反的引号,例如:

代码语言:javascript
复制
case "$msg" in
*\'*\"*|*\"*\'*) echo oops; exit 1 ;;
*\'*)   q=\" ;;
*\"*)   q=\' ;;
esac

... --messaging-create-sms="text=$q$msg$q,number='$num'"
票数 1
EN

Unix & Linux用户

发布于 2023-04-11 23:22:00

现在有点晚了,但我最近遇到了同样的问题。我需要支持可以同时包含单引号和双引号的消息,这在当前的字符串解析中是不可能的。我想我应该自己修复它,并对存储库这里进行分叉,并添加了一个命令行选项--messaging-create-sms-with-text,它允许您从文件(可以是stdin)中读取消息文本。该选项的工作方式类似于--messaging-create-sms-with-data

我已经完成了一个拉请求,但是这个项目似乎不是很活跃(最后一次提交是在2021年11月4日)。我们走着瞧。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/587105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档