Bash - argumentos não numerais para o operador [] (array)

1

Eu tenho um pequeno script abaixo; no entanto, não entendo muito bem o loop for e a instrução if. Primeiro, vamos dar uma olhada no script:

listFieldNumbers ()
 { for ii in ${!field_number[@]}; 
do 
if [ $ii -lt $(( ${#field_number[*]}-1 )) ];
 then echo -n "$(( ${field_number[$ii]} + 1 )),"; 
else echo "$(( ${field_number[$ii]} + 1))"; 
fi; 
done; }

Eu não entendo o que as seguintes afirmações significam:

  1. field_number[@]
  2. {#field_number[*]}
por Prasad 02.01.2016 / 19:10

2 respostas

2

field_number é uma matriz
${!field_number[@]} fornece a lista de índices da matriz
${#field_number[*]} é o número de elementos na matriz.

Eu recomendo que você procure por um tutorial bash sobre matrizes. Eles são um pouco complicados de se trabalhar.

    
por 02.01.2016 / 19:20
1
  1. faz referência a todo o elemento na matriz field_number
  2. é ${#field_number[*]} , o número de elementos field_number

Basta ler este tutorial: link

    
por 02.01.2016 / 19:20