Пробел между строкой * gettext * и курсором команды * read * отсутствует - PullRequest
0 голосов
/ 03 июля 2011

Скажите следующий Bash скрипт:

#!/bin/bash

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

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

GNU gettext используется для перевода строки, а read используется дляполучить пользовательский ввод.Тем не менее, даже если в сообщении gettext есть завершающий пробел, в терминале нет места, когда я запускаю скрипт.Пример (курсор |):

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

В качестве обходного пути я удаляю завершающий пробел в строке gettext и добавляю пробел снаружи:

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

Тогда это работает:

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

Мой вопрос: есть ли лучший обходной путь?

Большое спасибо.

1 Ответ

1 голос
/ 03 июля 2011

Не использовать echo -n.

Просто сделайте это:

gettext "Insert a word: "
read word

Или вы можете заключить выражение в кавычки и передать его в echo:

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

Использование кавычек гарантирует, что результат, переданный в echo, будет интерпретирован как один параметр "Insert a word: " вместо 3: 'Insert' 'a' 'word:'.

...