一重引用符文字を含むSMSテキスト転送の問題 - mmcli(ModemManager)

一重引用符文字を含むSMSテキスト転送の問題 - mmcli(ModemManager)

マンページの例は次のとおりですmmcli

mmcli -m 0 --messaging-create-sms="text='Hello world',number='+1234567890'"

解析方法の詳細は不明であり、説明には既知のキーのみが記載され、リストされています--messaging-create-sms=['KEY1=VALUE1,...']。キー値はtextUTF-8メッセージテキストです。

私のスクリプトの対応する行は次のとおりです。

mmcli -m $modem --messaging-create-sms="text='$msg',number='$num'"

問題は、メッセージに一重引用符を含めることができないことです。エラーは次のとおりです。

'GDBus.Error:org.freedesktop.ModemManager1.Error.Message.InvalidPduParameter: メッセージ テキストを GSM に変換できません。

現在は二重引用符で置き換えています。私は成功せずにバックスラッシュ脱出を試みました。助けを求めてもいいですか?

ベストアンサー1

おそらく解析を実行するコードはここ:

/* 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'"

おすすめ記事