Bash est un langage de script qui ne prend pas en charge la POO, vous ne pouvez donc pas. Essayez Python.
La seule autre chose que vous puissiez faire est d'avoir plusieurs tableaux, mais c'est compliqué. Utilisez l'index pour les relier.
Je me souviens donc avoir vérifié cette question et répondu il y a quelques années .. et je pensais .... QUOI !?!?!
Puis la semaine dernière, j'ai examiné de plus près la réponse de @Maxims, puis c'est devenu clair...
J'ai passé la semaine dernière à créer un transpileur de classe bash et un chargeur de classe pour l'objet de classe, avec des méthodes et d'autres goodies. Tout cela parce que je voulais créer une infrastructure d'animation de terminal :
Donc, même si ce n'est qu'un début, j'ai trouvé que c'était une aventure SUPER cool et stimulante. J'espère que mon code aidera aussi quelqu'un d'autre !!
BTW :A été testé uniquement sur MAC OS, donc quelques ajustements pourraient être nécessaires :)
Vous pouvez essayer de faire quelque chose comme ça
exemple.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.class
# 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
}
système.h
. system.class
system.class
system.stdout.printValue(){
echo $([email protected])
}
system.stdout.printString(){
echo [email protected]
}
Lien pour référence :https://github.com/mnorin/bash-scripts/tree/master/objectsLe fait est que vous ne pouvez pas créer d'objets, mais vous pouvez émuler la programmation orientée objet dans bash