¿Cuál es el problema con los subíndices de matriz incorrectos en Shell?
En bash 4.0 o posterior, puedes usar declare -A para declarar una matriz asociativa. Pero en versiones anteriores esta opción no existe, provocando así un error.
Si estás usando bash 4.0 o superior, el script debería funcionar bien. Puedes comprobar qué versión de bash estás utilizando con el siguiente comando:
copiar código de bash
echo $BASH_VERSION
Si tu versión de bash es inferior a 4.0, necesita actualizar bash a una versión superior o utilizar otra forma de implementar matrices asociativas.
Si no puede actualizar bash, puede utilizar el siguiente script para realizar el mismo trabajo:
copiar código de bash
#! /bin/bash
sex=()
mientras lee la línea
do
type=`echo "$line" | '{print $2}'`
sexo[$tipo]=$((sexo[$tipo] + 1))
hecho < sexo.txt
para i en "${!sex[@]}"
hacer
echo "$i:${sex[$i]}"
done
Este script utiliza una versión anterior de bash para implementar matrices asociativas. Inicializa el valor de cada clave en 0 y lo incrementa en 1 en cada aparición.