Soy nuevo en bash y no puedo encontrar un buen tutorial para responder mi pregunta.
array=( item1 item2 item3)
for name in ${array[@]}; do
echo current/total
... some other codes
done
Quiero calcular el valor "actual" y "total", ya que el resultado esperado de esto es:
1/3
2/3
3/3
Gracias por cualquier tipo de consejos.
${array[@]}
entre comillas dobles. De lo contrario, se dividirá la palabra y obtendrá resultados no deseados, en entradas comoarray=("item 1" "item 2" "item 3")
.Respuestas:
Puede acceder a los índices de la matriz usando
${!array[@]}
y la longitud de la matriz usando${#array[@]}
, por ejemplo:Tenga en cuenta que dado que las matrices bash están indexadas a cero , en realidad obtendrá:
Si desea que el recuento se ejecute desde 1, puede reemplazarlo
$index
por$((index+1))
. Si desea los valores , así como los índices que puede utilizar,"${array[index]}"
es decirdando
fuente
echo ($index+1)/${#array[@]}
?Un índice cero es perfectamente válido si piensa que el índice es realmente un desplazamiento de la dirección base de una matriz. De hecho, esa es la norma, aunque varía de un dialecto a otro. Con el antiguo lenguaje Jovial, en
[0]
realidad contenía el tamaño máximo de la matriz. por lo que comenzó con[1]
.Con algunas implementaciones básicas, puede elegir arbitrariamente tener uno
0
o1
el primer índice. Y al menos un básico le permite designar a matrices índice de Fron[n]
a[m]
. donden
ym
puede tener cualquier valor entero, incluso negativo, siempre quen
sea menor o igual quem
. El valor den
ellos se resta de lo[index]
ingresado, comoindex-n = 0
si el índice correspondieran
.Pero puede hacer lo mismo y más en su propio código. Incluso puede invertir el orden de una matriz de esta manera:
Este ejemplo de código es en realidad solo en parte de un idioma. Solo quería que fuera más legible. La variable de paso se usa para controlar la dirección aparente en la que se está moviendo, ya sea positiva o negativa, y se usa para calcular el índice efectivo al entrar o salir de la matriz, que en realidad siempre es positivo
[0]
.fuente