표시하려는 텍스트에 "명령"이 포함되어 있어 스크립트가 중지된 것 같습니다.
자막 파일의 처음 20줄을 표시하는 코드:
junknownsub=$(head -20 "$f")
zenity --question --text="$jsubtitle\n\nIs this English?\n\n$junknownsub" --width=200 --height=200
다음은 텍스트입니다.
0
00:00:00,000 --> 00:00:18,338
<b><font color="#909090">^.^.^.^.movie .^.^.^.^</font></b>
<b><font color="#804040">®</font></b> <b><font color=#ff0000> </font></b> <b><font color="#804040">®</font></b>
나는 모든 "일반" 텍스트가 아무 문제 없이 잘 작동하기 때문에 문제를 일으키는 것은 < >^ 문자라고 생각합니다.
어쨌든 이 문제를 해결할 방법이 있나요?
내가 이전에 받은 조언은 다음과 같습니다.
printf -v junknownsub '%q' $(head -n20 "$f")
하지만 이것은 Nemo를 정지시킬 뿐입니다.
답변1
일부 대화 상자가 표시됨그놈 제니티지원하다Pango 마크업 언어기본적으로 대화 상자 텍스트에서 해석합니다. zenity
예제의 텍스트가 잘못된 pango 태그로 구문 분석되고 있습니다. 이것은 쉘 문제가 아닙니다.
이를 방지하려면 다음을 수행할 수 있습니다.
- 이
--no-markup
옵션을 사용하세요. 단점은\n
대화 상자 텍스트의 형식을 지정하는 데 사용되는 순서를 포함하여 마크업이 문자 그대로 표시된다는 것입니다 . - 마커를 제거하기 위해 자막 텍스트를 전처리합니다.