6

Длина строки в Bash

20

Заголовок: Как сохранить длину строки в другой переменной?

Описание проблемы:

Я пытаюсь получить длину строки, хранящейся в переменной, и присвоить это значение другой переменной. У меня есть следующий код:

myvar="some string"
echo ${#myvar}  
# 11

Теперь я хочу сохранить результат (число 11) в другой переменной. Как это можно сделать?

5 ответ(ов)

6

Чтобы получить длину строки, сохранённой в переменной, например:

myvar="some string"
size=${#myvar}

Чтобы удостовериться, что значение было сохранено правильно, выведите его с помощью echo:

$ echo "$size"
11

Таким образом, переменная size будет содержать длину строки, которая равна 11.

0

Вам нужно использовать простоту в коде, следуя принципу KISS (Keep It Simple, Stupid). В приведенном вами примере переменная myvar используется для определения длины строки, и вот как это можно сделать:

# KISS (Keep It Simple Stupid)
size=${#myvar}
echo $size

В этом коде ${#myvar} возвращает длину строки, хранящейся в переменной myvar, и выводит ее с помощью команды echo. Это простое решение, которое эффективно выполняет поставленную задачу.

0

В этом случае, если вы хотите получить длину строки в символах, можно использовать следующую команду:

echo -n 'Tell me the length of this sentence.' | wc -m

Результатом будет:

36

Флаг -n в команде echo предотвращает добавление символа новой строки в конец строки, а команда wc -m считает количество символов, включая пробелы. Таким образом, вы получите правильную длину заданной строки.

0

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

MYSTRING="abc123"
MYLENGTH=$(printf "%s" "$MYSTRING" | wc -c)
  • Используйте wc -c или wc --bytes для подсчета байтов, так как Unicode символы могут занимать 2, 3 или более байтов.
  • Используйте wc -m или wc --chars для подсчета символов, так как Unicode символы считаются за один, пока они не требуют больше байтов.

Таким образом, вы можете выбрать нужный вариант в зависимости от того, хотите ли вы получить количество байтов или символов в вашей строке.

0

Если вы хотите использовать это с аргументами командной строки или функциями, убедитесь, что используете size=${#1}, а не size=${#$1}. Второй вариант может показаться более интуитивным, но он является некорректным по синтаксису.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь