Как избежать пробела после переменной bash в строке?

17

У меня есть переменная для цвета. Я использую его, чтобы установить цвет для строк, оценивая его внутри строки. Тем не менее, мне нужно включить пробел после имени (чтобы имя не содержало часть текста). Это иногда выглядит плохо.

Как я могу избежать использования (печати) этого пространства?

Пример (скажем так Red=1и NC=2):

echo -e "$Red Note: blabla$NC".

Выход:

1 Note: blabla2.

Ожидаемый результат:

1Note: blabla2.
MatthewRock
источник

Ответы:

4

То, что вы должны привыкнуть использовать это printf:

printf '%sNote: blabla%s\n' "$Red" "$NC"

Где каждый %sзаменит переменную. И -eэто не нужно, так как printf принимает значения обратной косой черты \ n, \ t и т. Д. В переносимой форме.

Помните, что echo -eон не переносим на другие оболочки.

Другие опции:

Вы можете использовать две команды, объединяющие их вывод:

echo -ne "$Red"; echo -e "Note: blabla$NC"

Вы можете использовать простую конкатенацию строк:

echo -e "$Red""Note: blabla$NC"

Или вы могли бы использовать, { }чтобы избежать путаницы между именами и текстом:

echo -e "${Red}Note: blabla$NC"

источник