Bash es un lenguaje de secuencias de comandos, que no es compatible con OOP, por lo que no puede. Prueba Python.
La única otra cosa que podría hacer es tener varias matrices, pero eso es complicado. Utilice el índice para vincularlos.
Así que recuerdo haber revisado esta pregunta y respuesta hace unos años... y estaba pensando... ¡¿QUÉ?!?!
Luego, la semana pasada, eché un vistazo más de cerca a la respuesta de @Maxims y luego quedó claro...
Pasé la última semana y creé un transpilador de clases bash y un cargador de clases para objetos de clase, con métodos y otras cosas... todo porque quería crear una infraestructura de animación de terminal:
Entonces, si bien esto es solo el comienzo, descubrí que es una aventura SUPER genial y desafiante. ¡¡Espero que mi código también ayude a alguien más!!
Por cierto:se probó solo en MAC OS, por lo que es posible que se necesiten algunos ajustes :)
Puedes intentar hacer algo como esto
ejemplo.sh
#!/bin/bash
# include class header
. obj.h
. system.h
# create class object
obj myobject
# use object method
myobject.sayHello
# use object property
myobject.fileName = "file1"
system.stdout.printString "value is"
system.stdout.printValue myobject.fileName
obj.h
obj(){
. <(sed "s/obj/$1/g" obj.class)
}
obj.clase
# Class named "obj" for bash Object
# property
obj_properties=()
# properties IDs
fileName=0
fileSize=1
obj.sayHello(){
echo Hello
}
obj.property(){
if [ "$2" == "=" ]
then
obj_properties[$1]=$3
else
echo ${obj_properties[$1]}
fi
}
obj.fileName(){
if [ "$1" == "=" ]
then
obj.property fileName = $2
else
obj.property fileName
fi
}
sistema.h
. system.class
sistema.clase
system.stdout.printValue(){
echo $([email protected])
}
system.stdout.printString(){
echo [email protected]
}
Enlace de referencia:https://github.com/mnorin/bash-scripts/tree/master/objectsEl punto es que no puede crear objetos pero puede emular la programación orientada a objetos en bash