Почему существует различие между выводом '$VAR эха | туалет-c' и '$ эха {#VAR}'?

Я работаю над сценарием Bash, и длина строки, содержавшейся в определенной переменной, является одним из моих условий. Текущая строка W5u7TBTzF17GGFV8DBJHvgAAAAI. Первоначально я имею, считают длину строки справкой wc -c:

$ VAR='W5u7TBTzF17GGFV8DBJHvgAAAAI'; echo "$VAR" | wc -c
28

Но мое условие сценария [[ ${#VAR} -eq 28 ]] никогда не передавайте. Затем я решил считать символы на одним. Действительно длина строки является 27 символами, также значение ${#VAR} 27:

$ echo "${#VAR}"
27

Таким образом, я нахожусь в удивлении - куда это различие прибывает из?

6
задан 14 September 2018 в 18:21

1 ответ

Это - путь echo работы. Теперь сделайте

echo koko

Вы добираетесь

georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo koko
koko

Но сделайте echo -n koko и Вы добираетесь

georgek@georgek-HP-Pavilion-17-Notebook-PC:~$ echo -n koko
kokogeorgek@georgek-HP-Pavilion-17-Notebook-PC:~$

Так wc получает newline character также. Использовать

echo -n "${VAR}" | wc -c

Получить желаемый результат. echo команда добавит newline символ, так, чтобы считался также. Удалить это и получить реальное использование количества -n опция.

13
ответ дан 23 November 2019 в 07:23

Другие вопросы по тегам:

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