Úvod do Bash skriptování
Alex Scriven
Data Scientist
Dva typy polí v Bash:
V Pythonu: my_list = [1,3,2,4]
V R: my_vector <- c(1,3,2,4)
Číselně indexované pole lze v Bash vytvořit dvěma způsoby.
1. Deklarace bez přidání prvků
declare -a my_first_array
2. Vytvoření a přidání prvků najednou
my_first_array=(1 2 3)
Pozor – bez mezer kolem znaménka rovnosti!
Prvky pole se v Bash neoddělují čárkami:
Toto je špatně:
my_first_array=(1, 2, 3)
Toto je správně:
my_first_array=(1 2 3)
array[@]. Bash vyžaduje složené závorky kolem názvu pole při přístupu k jeho vlastnostem.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Přístup k prvkům pole pomocí hranatých závorek.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Nastavení prvků pole pomocí indexové notace.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ při přepisování indexu, např. $my_first_array[0]=999 – to nebude fungovat.Použijte notaci array[@]:N:M k „výřezu" části pole.
N je počáteční index, M je počet vrácených prvků.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Přidání prvků na konec pole pomocí array+=(elements).
Například:
my_array=(300 42 23 2 4 33 54 67 66)my_array+=(10) echo ${my_array[@]}
300 42 23 2 4 33 54 67 66 10
Co se stane, když závorky kolem přidávaného prvku vynecháte? Podívejme se.
Například:
my_array=(300 42 23 2 4 33 54 67 66)
my_array+=10
echo ${my_array[@]}
30010 42 23 2 4 33 54 67 66
Řetězec 10 se pouze přidá k prvnímu prvku. To není žádoucí!
bash --version v termináluV Pythonu:
my_dict = {'city_name': "New York", 'population': 14000000}
V R:
my_list = list(city_name = c('New York'), population = c(14000000))
Asociativní pole lze vytvořit pouze pomocí syntaxe declare (s velkým -A).
Můžete nejprve deklarovat a prvky přidat později, nebo vše zapsat na jeden řádek.
Vytvoříme asociativní pole:
declare -A city_details # Nejprve deklarujemecity_details=([city_name]="New York" [population]=14000000) # Přidáme prvkyecho ${city_details[city_name]} # Přístup přes klíč vrátí hodnotu
New York
Alternativně lze asociativní pole vytvořit a přiřadit na jednom řádku
declare -A city_details=([city_name]="New York" [population]=14000000)
Přístup ke klíčům asociativního pole pomocí !
echo ${!city_details[@]} # Vrátí všechny klíče
city_name population
Úvod do Bash skriptování