Как не распечатать новую строку с эхом (и туалет) в сценарии оболочки?

Существует перевращение Manjaro, показывающее Потрясающий как WM по умолчанию.

Можно загрузить его отсюда.

5
11.12.2018, 19:04
3 ответа
[

] Для подавления новой строки с помощью []echo[], используемой на linux-системах[]1[], используйте []-n[]: [

] [
echo -n "echec avec le nom $path qui fait"
] [

] Однако, []wc[] также печатает новую строку, и это не может быть подавлено, но может быть отброшено:[

] [
size=$(echo $path | wc -c);
echo "echec avec le nom $path qui fait $((size-1)) caracteres"
] [

]Я использовал []$((size-1))[] здесь, потому что []wc[] будет считать вывод новой строки эхом. Вместо этого можно использовать []size=$(echo -n $path | wc -c)[], но остерегайтесь предостережения о нестандартности []-n[].[

] [
] [

][]1. Эхо []-n[], реализованное GNU coreutil, является нестандартным, поэтому YMMV. К счастью, вам на самом деле не нужно использовать его здесь. [][

]
6
27.01.2020, 20:32
[

] опция []-n[] с []echo[] подавляет новую строку. Таким образом, можно сделать:[

] [
echo -n "echec avec le nom $path qui fait" 
echo -n $(echo $path|wc -c)
echo "caracteres"
]
0
27.01.2020, 20:32

Было бы гораздо лучше, если бы вы вообще не использовали эхо . Использование echo в сочетании с произвольным входом может иметь нежелательные последствия. Более того, вам не нужно wc для подсчета символов в переменной оболочки - оболочка может делать это так же хорошо и без выполнения отдельного процесса загрузки.

Например:

с помощью wc:

_path=/some/place/in/my/filesystem
printf %s "$_path" | wc -c

###OUTPUT###
28

no wc:

printf %s "${#_path}"

###OUTPUT###
28

два аргумента printf:

printf 'Arg char count:\t%s\nArg contents:\t%s\n' \                                                                    
    "${#_path}" "$_path"

###OUTPUT###
Arg char count: 28
Arg contents:   /some/place/in/my/filesystem

ваша команда:

printf 'echec avec le nom %s qui fait %s caracteres\n' \
    "$_path" "${#_path}"

###OUTPUT###
echec avec le nom /some/place/in/my/filesystem qui fait 28 caracteres

Смотрите Почему printf лучше echo? и спецификация расширения параметра POSIX для получения дополнительной информации.

10
27.01.2020, 20:32

Теги

Похожие вопросы