V tomto článku se budeme zabývat základy sekvenčního výrazu v Bash.
Výraz sekvence Bash generuje rozsah celých čísel nebo znaků definováním začátku a konce rozsahu. Obecně se používá v kombinaci s for
smyčky.
Výraz sekvence Bash #
Výraz sekvence má následující tvar:
{START..END[..INCREMENT]}
- Výraz začíná otevírací složenou závorkou a končí zavírací složenou závorkou.
START
aEND
mohou být kladná celá čísla nebo jednotlivé znaky.START
aEND
hodnoty jsou povinné a oddělené dvěma tečkami..
bez mezery mezi nimi.INCREMENT
hodnota je volitelná. Pokud je přítomen, musí být oddělen odEND
hodnotu se dvěma tečkami..
bez mezery mezi nimi. Když jsou uvedeny znaky, výraz je rozšířen v lexikografickém pořadí.- Výraz se rozšíří na každé číslo nebo znaky mezi
START
aEND
včetně poskytnutých hodnot. - Nesprávně vytvořený výraz zůstane nezměněn.
Zde je výraz v akci:
echo {0..3}
Když žádný INCREMENT
za předpokladu, že výchozí přírůstek je 1:
0 1 2 3
Můžete použít i jiné postavy. Níže uvedený příklad vytiskne abecedu:
echo {a..z}
a b c d e f g h i j k l m n o p q r s t u v w x y z
Pokud START
hodnota je větší než END
pak výraz vytvoří rozsah, který se sníží:
for i in {3..0}
do
echo "Number: $i"
done
Number: 3
Number: 2
Number: 1
Number: 0
Při INCREMENT
je uveden, používá se jako krok mezi každou vygenerovanou položkou:
for i in {0..20..5}
do
echo "Number: $i"
done
Každé vygenerované číslo je o 5 větší než předchozí číslo:
Number: 0
Number: 5
Number: 10
Number: 15
Number: 20
Při použití celých čísel ke generování rozsahu můžete přidat úvodní 0
vynutit, aby každé číslo mělo stejnou délku. Chcete-li vyplnit vygenerovaná celá čísla úvodními nulami, buď START
a END
s nulou:
for i in {00..3}
do
echo "Number: $i"
done
Number: 00
Number: 01
Number: 02
Number: 03
Výraz může mít předponu nebo příponu s jinými znaky:
echo A{00..3}B
A00B A01B A02B A03B
Pokud výraz není sestaven správně, zůstane nezměněn:
echo {0..}
0..
Závěr č.
Výraz sekvence Bash vám umožňuje generovat řadu celých čísel nebo znaků.
Pokud máte nějaké dotazy nebo zpětnou vazbu, neváhejte zanechat komentář.