작은따옴표 문자가 포함된 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'"

답변2

조금 늦었지만 최근에도 같은 문제가 발생했습니다. 현재 문자열 구문 분석에서는 불가능한 작은따옴표와 큰따옴표를 포함할 수 있는 메시지를 지원해야 합니다. 내 생각엔 내가 직접 고치고 저장소를 포크해야 할 것 같아여기--messaging-create-sms-with-text그리고 파일(표준 입력일 수 있음)에서 메시지 텍스트를 읽을 수 있는 명령줄 옵션을 추가했습니다 . 이 옵션도 비슷하게 작동합니다 --messaging-create-sms-with-data.

끌어오기 요청을 완료했지만 프로젝트가 그다지 활성화되지 않은 것 같습니다(마지막 커밋은 2021년 11월 4일이었습니다). 두고 보자.

편집: 이 프로젝트는 다음에서 호스팅됩니다.FreeDesktop의 자체 gitlab. 나는 그것이 GitHub에 있다고 가정합니다. 내 잘못:)

내 변경사항그 이후로 받아 들여졌습니다.

관련 정보