Pokud se zabýváte strunami v bash, možná budete potřebovat znát délku řetězce.
Naštěstí je získání délky struny v bash super jednoduché. Řekněme, že máte řetězec s názvem my_string
. Jeho délku lze extrahovat jako:
${#my_string}
Zde je příklad pro lepší vysvětlení:
[email protected]:~$ my_string="abhishek"
[email protected]:~$ echo "length is ${#my_string}"
length is 8
To bylo snadné, že? Tuto délku řetězce můžete uložit do jiné proměnné a použít ji později:
[email protected]:~$ my_string="abhishek"
[email protected]:~$ length=${#my_string}
[email protected]:~$ echo "String length is $length"
String length is 8
Stejně jako většina ostatních věcí v Linuxu to není jediný způsob, jak vypočítat délku řetězců v Bash.
Získejte délku řetězce v bash pomocí příkazu expr
Podívejme se na některé další příkazy, které by vám mohly pomoci otestovat délku řetězce v bash.
Jedním z těchto příkazů je příkaz expr. Má několik možností, které jsou užitečné pro možnosti řetězce. Mezi nimi length
vám dává délku řetězce.
[email protected]:~$ expr length "my string"
9
Protože příkaz expr vypisuje délku, měli byste ji uložit do proměnné pomocí substituce příkazů.
#!/bin/bash
str="my string"
length=$(expr length "$str")
echo "Length of my string is $length"
Nyní, když spustíte tento bash shell skript, vypíše délku:
[email protected]:~$ bash string.sh
Length of my string is 9
Pomocí awk získáte délku řetězce
AWK je super všestranný příkaz pro úpravu textu v příkazovém řádku Linuxu. Můžete jej použít také k výpočtu délky řetězce.
Budete muset použít příkaz echo a poté použít přesměrování potrubí k analýze pomocí awk:
[email protected]:~$ echo "my string" | awk '{print length}'
9
Jak vidíte, pokud nejste obeznámeni se základy příkazů awk, není snadné si zapamatovat syntaxi.
Použití příkazu wc k výpočtu délky řetězce
Dalším způsobem, jak získat délku řetězce v Linuxu, je použití příkazu wc. Nyní se příkaz wc používá pro počítání počtu řádků, znaků v souboru.
Řetězec můžete echo a přenést jej do příkazu wc. -m
volba udává počet znaků.
[email protected]:~$ echo -n "my string" | wc -m
9
Všimněte si -n
možnost s příkazem echo? To je důležité, protože echo automaticky přidá nový řádek znak \n
na konci a prodlouží délku provázku o jeden. Pomocí -n
možnost, příkaz echo nepřidá nový znak řádku.
K uložení délky řetězce do proměnné můžete použít substituci příkazů, jak jste viděli v předchozích příkladech.
#!/bin/bash
str="my string"
length=$(echo -n "my string" | wc -m)
echo "Length of my string is $length"
Osobně je ${#string} můj preferovaný způsob, jak získat délku řetězce. Snadněji zapamatovatelné.
co ty? Jakou metodu preferujete?