Introdução ao Bash Scripting
Alex Scriven
Data Scientist
Dois tipos de arrays em Bash:
Em Python: my_list = [1,3,2,4]
Em R: my_vector <- c(1,3,2,4)
Criar um array indexado por números pode ser feito de duas formas em Bash.
declare -a my_first_array
my_first_array=(1 2 3)
Lembre-se: sem espaços ao redor do sinal de igual!
Vírgulas não são usadas para separar elementos em Bash:
Isto não está correto:
my_first_array=(1, 2, 3)
Isto está correto:
my_first_array=(1 2 3)
array[@]. Note que o Bash exige chaves ao redor do nome do array para acessar essas propriedades.my_array=(1 3 5 2)
echo ${my_array[@]}
1 3 5 2
#array[@]echo ${#my_array[@]}
4
Acessando elementos com colchetes.
my_first_array=(15 20 300 42)
echo ${my_first_array[2]}
300
Defina elementos usando a notação de índice.
my_first_array=(15 20 300 42 23 2 4 33 54 67 66)my_first_array[0]=999echo ${my_first_array[0]}
999
$ ao sobrescrever um índice, como em $my_first_array[0]=999, pois não funciona.Use array[@]:N:M para "fatiar" um subconjunto do array.
N é o índice inicial e M quantos elementos retornar.my_first_array=(15 20 300 42 23 2 4 33 54 67 66)
echo ${my_first_array[@]:3:2}
42 23
Adicione ao final com array+=(elements).
Por exemplo:
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
O que acontece se você não colocar parênteses no que quer acrescentar? Vamos ver.
Por exemplo:
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
A string 10 será só anexada ao primeiro elemento. Não é o que queremos!
bash --version no terminalEm Python:
my_dict = {'city_name': "New York", 'population': 14000000}
Em R:
my_list = list(city_name = c('New York'), population = c(14000000))
Você só pode criar um array associativo usando a sintaxe declare (e -A maiúsculo).
Você pode declarar primeiro e depois adicionar elementos, ou fazer tudo em uma linha.
Vamos criar um array associativo:
declare -A city_details # Declarar primeirocity_details=([city_name]="New York" [population]=14000000) # Adicionar elementosecho ${city_details[city_name]} # Indexar pela chave para retornar o valor
New York
Como alternativa, crie e atribua um array associativo em uma linha
declare -A city_details=([city_name]="New York" [population]=14000000)
Acesse as "chaves" de um array associativo com !
echo ${!city_details[@]} # Retorna todas as chaves
city_name population
Introdução ao Bash Scripting