マンページの例は次のとおりです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 に変換できません。
現在は二重引用符で置き換えています。私は成功せずにバックスラッシュ脱出を試みました。助けを求めてもいいですか?
ベストアンサー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'"