Saída da matriz de scipt da shell

0

Eu queria saber como ecoar o último valor de um array no shell script. por exemplo eu tenho o seguinte array "

$i=("1","2","3")

e eu queria definir uma condição na última posição, o que significa que quando ele chega na posição 3 ele para ou diz "olá mundo".

Como posso fazer isso?

EDIT o shell é shell script como em #! / bin / sh

    
por George Nostradamos 18.08.2017 / 22:53

2 respostas

2

Supondo que o shell seja Bash:

i=("a" "b" "c"); echo "${i[$((${#i[@]}-1))]}"

produzirá c . A construção ${#i[@]} retorna o número de elementos na matriz i , de modo que $((${#i[@]}-1)) seja o índice do último elemento. Veja man bash para detalhes; contém uma seção chamada Arrays .

echo "${i[-1]}"

também ecoa c , porque os índices negativos são contados a partir do final da matriz.

E os elementos da matriz dentro de parênteses são separados por espaços e não por vírgulas.

    
por AlexP 18.08.2017 / 23:01
0

Sua sintaxe de matriz está errada: você quer i=(1 2 3)

O último elemento é

$ echo "${i[-1]}"
3

No entanto, isso cheira a uma pergunta XY .

Você realmente deseja iterar sobre todos os elementos, mas o último? Então faça isso:

len=${#i[@]}
for elem in "${i[@]:0:len-1}"; do
    echo "$elem"
done
echo "hello world"

Caso contrário, quais são seus requisitos reais?

    
por glenn jackman 18.08.2017 / 23:02