Как найти длину строки в сценарии Bash?

Опубликовано: 29 Сентября, 2022

В этой статье мы увидим, как получить длину строки в сценариях Bash.

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

  1. Использование оператора #
  2. Использование цикла
  3. Использование команды выражения
  4. Использование awk-команды
  5. Использование команды wc

Используя эти упомянутые инструменты и команды, мы сможем получить длину строковой переменной в скрипте BASH.

Способ 1: Использование оператора #

#!usr/bin/env bash
str="this is a string"
n=${#str}
echo "Length of the string is : $n "

Мы можем использовать оператор #, чтобы получить длину строки в BASH, нам нужно заключить имя переменной, заключенное в « {} », а внутри этого мы используем # , чтобы получить длину строковой переменной . Таким образом, с помощью оператора «#» в BASH мы можем получить длину строковой переменной.

Способ 2: Использование цикла while

В этом примере. мы можем использовать цикл while вместе с командой чтения, чтобы получить длину строки. Во-первых, мы инициализируем строку как угодно, это может быть пользовательский ввод, позиционный параметр и т. д. Работать с переменной довольно просто, поэтому мы создаем переменную для строки, а также инициализируем длину «n» до 0. Затем мы запускаем цикл while, читая символы за символами, используя аргумент -n1, т. е. читаем только один символ из всей строки.

Для каждого символа в переменной «str», то есть после каждой итерации, мы увеличиваем длину «n» на единицу. В цикле while мы читаем из строки «str» с помощью команды echo вместе с аргументом -n, который ограничивает экранирование символа новой строки. Таким образом, в конце цикла у нас есть длина строки в переменной n, к которой можно получить доступ в соответствии с требованиями.

#!usr/bin/env bash

str="this is a string"
n=0
while read -n1 character; do
    n=$((n+1)); 
done < <(echo -n "$str")
echo "Length of the string is : $n "

Способ 3: Использование команды expr

#!usr/bin/env bash

str="Test String@#$"
n=`expr "$str" : ".*"`
echo "Length of the string is : $n "

В этом примере мы используем команду expr, чтобы найти длину строки в BASH. Команда expr принимает первый аргумент в качестве строковой переменной, а затем оператор сравнения «:», который подсчитывает количество общих символов в строке, и следующую строку, указанную после оператора «:». Для вычисления длины строки мы анализируем предыдущую строку. Для этого «.*» — это регулярное выражение, которое получает 0 или более символов ранее предоставленного токена. Даже синтаксический анализ строки вместо «.*» будет работать

n=`expr "$str" : "$str"`

Здесь мы использовали обратные кавычки (« ` ` »), но даже при использовании $() нет такого преимущества использования первого над вторым. Оба служат одной и той же цели, но вложение $() гораздо эффективнее, чем обратные кавычки.

#!usr/bin/env bash

str="Test String@#$"
n=`expr length "$str"`
echo "Length of the string is : $n "

Мы даже можем использовать встроенную функцию в команде expr «длина», которая получает длину строки в качестве параметра сразу после функции. Команда length, как следует из названия, дает нам длину предоставленной строки или любой переменной.

Помните, что для каждого фрагмента кода, следующего за этим, вы можете использовать $() вместо обратных кавычек ( ` ` ).

n=$(expr length "$str")

Способ 4: использование команды awk

#!usr/bin/env bash

str="this is a string"
n=`echo $str | awk "{print length}"`
echo "Length of the string is : $n "

Мы даже можем использовать команду awk, чтобы получить длину строки. Мы используем функцию length, встроенную в awk, вместе с print, которая печатает значение и, таким образом, сохраняет длину строки после передачи (« | ») с помощью команды echo.

В выражении echo $str | awk '{длина печати}' мы повторяем строковую переменную « str », а затем перенаправляем (передаем) ее вывод в команду awk. В команде awk мы печатаем вывод функции длины, которая принимает переменную str и сохраняет ее в переменной « n ».

Способ 5: использование команды wc

#!usr/bin/env bash

str="this is a string"
n=`echo -n "$str"|wc -c`
echo "Length of the string is : $n "

В этой демонстрации мы использовали команду wc для получения длины строки. Внутри этой команды « echo -n «$str» | wc -c » команда echo получает аргумент -n, который не экранирует символ новой строки. Затем вывод команды echo перенаправляется (передается) в команду wc, которой снова дается аргумент -c, который подсчитывает количество байтов в предоставленной переменной, мы даже можем использовать -m, который также точно подсчитывает количество символов. .

echo -n "$str" | wc -m