Bash ist eine Skriptsprache, die OOP nicht unterstützt, also können Sie das nicht. Versuchen Sie es mit Python.
Das einzige andere, was Sie tun könnten, ist, mehrere Arrays zu haben, aber das ist chaotisch. Verwenden Sie den Index, um sie zu verknüpfen.
Ich erinnere mich, dass ich diese Frage vor ein paar Jahren überprüft und beantwortet habe ... und dachte ... WAS!?!?!
Letzte Woche habe ich mir dann @Maxims Antwort genauer angeschaut und dann wurde klar..
Ich habe die letzte Woche damit verbracht, einen Bash-Klassen-Transpiler und einen Klassenlader für Klassenobjekte zu erstellen, mit Methoden und anderen Leckereien … alles, weil ich eine Terminal-Animationsinfrastruktur erstellen wollte:
Obwohl dies nur ein Anfang ist, fand ich, dass dies ein SUPER cooles und herausforderndes Abenteuer ist. Ich hoffe, mein Code würde auch jemand anderem helfen!
Übrigens:Wurde nur auf MAC OS getestet, daher könnten einige Anpassungen erforderlich sein :)
Sie können versuchen, so etwas zu tun
example.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)
}
Objekt.Klasse
# 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
}
system.h
. system.class
system.class
system.stdout.printValue(){
echo $([email protected])
}
system.stdout.printString(){
echo [email protected]
}
Link als Referenz:https://github.com/mnorin/bash-scripts/tree/master/objectsDer Punkt ist, dass Sie keine Objekte erstellen können, aber Sie können objektorientierte Programmierung in Bash emulieren