Eu sou novo no bash e não consigo encontrar um bom tutorial para responder à minha pergunta.
array=( item1 item2 item3)
for name in ${array[@]}; do
echo current/total
... some other codes
done
Eu quero calcular o valor "atual" e "total", como a saída esperada desse valor:
1/3
2/3
3/3
Obrigado por qualquer tipo de dicas
${array[@]}
aspas duplas. Caso contrário, a divisão de palavras será realizada e você obterá resultados indesejáveis, em entradas comoarray=("item 1" "item 2" "item 3")
.Respostas:
Você pode acessar os índices da matriz usando
${!array[@]}
e o comprimento da matriz usando${#array[@]}
, por exemplo:Observe que, como as matrizes bash são zero indexadas , você realmente obterá:
Se você deseja que a contagem seja executada a partir de 1, você pode substituir
$index
por$((index+1))
. Se você quiser que os valores , bem como os índices que você pode usar"${array[index]}"
istodando
fonte
echo ($index+1)/${#array[@]}
:?Um índice zero é perfeitamente válido se você pensar no índice como sendo realmente um deslocamento do endereço base de uma matriz. Essa é a norma de fato, embora varie de dialeto para dialeto. Com a antiga linguagem jovial,
[0]
na verdade continha o tamanho máximo da matriz. então começou com[1]
.Com algumas implementações básicas, você pode optar arbitrariamente por ter um
0
ou1
como o primeiro índice. E pelo menos um básico permite designar matrizes para o índice do fron[n]
para[m]
. onden
em
pode ter qualquer valor inteiro, mesmo negativo, contanto quen
seja menor ou igual am
. O valor ao qualn
eles são subtraídos dos[index]
inseridos, comoindex-n = 0
se o índice correspondessen
.Mas você pode fazer a mesma coisa e muito mais em seu próprio código. Você pode até reverter a ordem de uma matriz desta maneira:
Este exemplo de código é, na verdade, apenas parcialmente de um idioma. Eu só queria que fosse mais legível. A variável step é usada para controlar a direção aparente na qual você está se movendo, seja positiva ou negativa, e é usada para calcular o índice efetivo ao entrar ou sair da matriz, na qual é sempre sempre positivo
[0]
.fonte