Quoting
發送帶有單引號字元的 SMS 文本時出現問題 - mmcli (ModemManager)
這是手冊頁中的一個範例
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’
目前我正在用雙引號替換它。我嘗試了反斜杠轉義,但沒有奏效。能否請你幫忙?
也許進行解析的程式碼在這裡:
/* 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'"