맨페이지의 예는 다음과 같습니다 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'"
답변2
조금 늦었지만 최근에도 같은 문제가 발생했습니다. 현재 문자열 구문 분석에서는 불가능한 작은따옴표와 큰따옴표를 포함할 수 있는 메시지를 지원해야 합니다. 내 생각엔 내가 직접 고치고 저장소를 포크해야 할 것 같아여기--messaging-create-sms-with-text
그리고 파일(표준 입력일 수 있음)에서 메시지 텍스트를 읽을 수 있는 명령줄 옵션을 추가했습니다 . 이 옵션도 비슷하게 작동합니다 --messaging-create-sms-with-data
.
끌어오기 요청을 완료했지만 프로젝트가 그다지 활성화되지 않은 것 같습니다(마지막 커밋은 2021년 11월 4일이었습니다). 두고 보자.
편집: 이 프로젝트는 다음에서 호스팅됩니다.FreeDesktop의 자체 gitlab. 나는 그것이 GitHub에 있다고 가정합니다. 내 잘못:)
내 변경사항그 이후로 받아 들여졌습니다.