2011-07-03 2 views
0

말 다음 배쉬 스크립트읽어 * gettext에의 * 문자열과 *의 커서 사이에있는 공간이 없습니다 * 명령

#!/bin/bash 

export TEXTDOMAINDIR=./locale 
export TEXTDOMAIN=test-gettext-read 
. gettext.sh 

echo -n $(gettext "Insert a word: ") 
read word 

GNU는 문자열을 번역하는 데 사용됩니다을와 gettext 이 사용 읽기 사용자 입력을 얻는다. 그러나 gettext 메시지에 후행 공백이 있더라도 스크립트를 실행할 때 터미널에 공간이 없습니다.

$ bash test-gettext-read.sh 
Insert a word:| 

이 문제를 해결 나는 gettext를 문자열의 후행 공백을 제거하고 나는 외부의 공간을 추가 : 예 (커서 |입니다)

echo -n $(gettext "Insert a word:")" " 

를 다음 작동 :

$ bash test-gettext-read.sh 
Insert a word: | 

내 질문 : 더 나은 해결 방법이 있습니까?

고마워요.

+0

'echo $ "단어 삽입 :" –

답변

1

echo -n을 사용하십시오.

은 간단하게이 작업을 수행 :

gettext "Insert a word: " 
read word 

또는 당신은 에코 표현식 오순절 따옴표를 포장하고 전달할 수 :

echo -ne "$(gettext 'Insert\ta\tword: ')" 

에코에 전달 된 결과 해석 될 수 있도록 할 것이다 따옴표를 사용하여 하나의 파라미터로서 "Insert a word: "3의 인스턴스 : 'Insert''a''word:'.

+0

고마워요,하지만 제 예제가 완전하지 않다는 것을 알고 있습니다. 'echo -en $ (gettext "a \ tb :")'는 어떨까요? 'gettext -e "구문을 사용하면 \ tb :"', 번역 할 문자열을 얻을 수 없을 것입니다. -x -o locale/test-gettext-read.pot --from-code = UTF -8 -L 쉘 테스트-gettext-read.sh'. – jpfleury

+0

실제로'xgettext'는'gettext'의 첫 번째 인수 만 추출하기 때문에'echo -ARGUMENTS $ (gettext "string")'을 사용했습니다. – jpfleury

+1

@jpfleury 에코를 사용하여 해결책을 제공하기 위해 내 게시물을 변경했습니다. – Lynch