사용자가 구두점 두 개를 잘못 입력했을 때 Python TTS 프로그램이 어떻게 반응하는지 테스트해야 합니다.
그래서 "C'est un test!"라는 문장을 확인해야 합니다. (알아채다! .마지막에).
그래서 메시지가 표시되면 입력했습니다.
$ python3 /home/user1/TTS/bin/synthesize.py --text "C'est un test!."
그러나 Bash는 다음을 표시합니다.
python3 /home/user1/TTS/bin/synthesize.py --text "이것은 테스트입니다./구성"
("!."가 "./configure"로 어떻게 변경되는지 확인하세요).
"This is a test!"(마침표 제외)는 작동하지만 "!."를 테스트해야 합니다.
큰따옴표를 작은따옴표로 바꾸려고 했지만 성공하지 못했습니다. "!"를 ""로 이스케이프 처리했지만 TTS 라이브러리로 전송된 문장에 포함되었습니다.
나는 "!"가 Bash에서 특별한 의미를 갖는다는 것을 이해합니다.여기) 그리고 "."와 연관되어 있습니다. 이전 명령을 사용합니다.
Bash가 문자열에서 "!."를 처리하지 못하게 하고 그대로 전달하는 방법이 있나요?
당신의 도움을 주셔서 감사합니다
답변1
이것은역사적 확장. 빈 문자열을 사용 set +H
하거나 set +o histexpand
또는 설정하여 완전히 비활성화할 수 있습니다 $histchars
. 또는 여기에서 큰따옴표 대신 작은따옴표를 사용할 수 있습니다. 따옴표 외에 접두사를 추가하여 !
기록 확장을 비활성화할 수도 있습니다 \
.
배쉬 에 따르면 set --help
:
-o 옵션 이름은
옵션 이름에 해당하는 변수를 설정합니다:
[...]
-H
[...]
-H 를 사용하여 histexpand를
활성화합니다! 스타일 기록 대안. 이 플래그는 쉘이 대화형일 때 기본적으로 켜져 있습니다.
[...]
- 대신 +를 사용하면 이러한 플래그가 꺼집니다.
다음 명령을 실행하여 차이점을 확인할 수 있습니다.
set -H
$> echo "hello!."
$> echo "hello!1"
$> !2
$> !3
set +H
$> echo "hello!."
$> echo "hello!1"
$> !2
$> !3