Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cuál es el problema con los subíndices de matriz incorrectos en Shell?

¿Cuál es el problema con los subíndices de matriz incorrectos en Shell?

Su secuencia de comandos no debería tener problemas para leer y procesar el archivo sex.txt, pero tiene problemas para generar los elementos de la matriz. El problema es que estás usando una versión antigua de bash, que no admite declarar -A para declarar matrices asociativas.

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.