Если вы имеете дело со строками в bash, вам может потребоваться знать длину строки.
К счастью, получить длину строки в bash очень просто. Допустим, у вас есть строка с именем my_string. Ее длину можно извлечь как:
${#my_string}
Вот пример, чтобы лучше объяснить:
destroyer@andreyex:~$ my_string="destroyer" destroyer@andreyex:~$ echo "длина ${#my_string}" длина 9
Это было легко, правда? Вы можете сохранить эту длину строки в другой переменной и использовать ее позже:
destroyer@andreyex:~$ my_string="destroyer" destroyer@andreyex:~$ length=${#my_string} destroyer@andreyex:~$ echo "Длина строки $length" Длина строки 9
Как и большинство других вещей в Linux, это не единственный способ вычисления длины строк в Bash.
Давайте посмотрим на некоторые другие команды, которые могут помочь вам проверить длину строки в bash.
Одна из этих команд – команда expr. У него есть несколько опций, которые полезны для строковых опций. Среди них length, вы получите длину строки.
destroyer@andreyex:~$ expr length "моя строка" 10
Поскольку команда expr выводит длину, вы должны сохранить ее в переменной, используя подстановку команд.
#!/bin/bash str="моя строка" length=$(expr length "$str") echo "Длина моей строки $length"
Теперь, если вы запустите этот сценарий оболочки bash, он напечатает длину:
destroyer@andreyex:~$ bash string.sh Длина моей строки 10
AWK – универсальная команда для редактирования текста в командной строке Linux. Вы также можете использовать его для расчета длины строки.
Вам нужно будет использовать команду echo, а затем использовать перенаправление канала, чтобы проанализировать ее с помощью команды awk:
destroyer@andreyex:~$ echo "моя строка" | awk '{print length}' 10
Как видите, запомнить синтаксис непросто , если вы не знакомы с основами работы с командами awk.
Другой способ получить длину строки в Linux – использовать команду wc. Теперь команда wc используется для подсчета количества строк, символов в файле.
Вы можете повторить строку и передать ее команде wc. Опция -m дает количество символов.
destroyer@andreyex:~$ echo -n "моя строка" | wc -m 10
Обратите внимание на вариант -n с командой echo? Это важно, потому что echo автоматически добавляет новый символ строки \n в конец и увеличивает длину строки на единицу. С Опцией -n команда echo не добавляет новый строчный символ.
Вы можете использовать подстановку команд, чтобы сохранить длину строки в переменной, как вы видели в предыдущих примерах.
#!/bin/bash str="моя строка" length=$(echo -n "моя строка" | wc -m) echo "Длина моей строки $length"
Лично мы предпочитаем $ {# string} для получения длины строки. Легче запомнить.
Как насчет вас? Какой метод вы предпочитаете?