Bash è un linguaggio di scripting, che non supporta OOP, quindi non puoi. Prova Python.
L'unica altra cosa che potresti fare è avere diversi array, ma è disordinato. Usa l'indice per collegarli.
Quindi ricordo di aver controllato questa domanda e di aver risposto qualche anno fa... e stavo pensando... COSA!?!?!
Poi la scorsa settimana ho dato un'occhiata più da vicino alla risposta di @Maxims ed è diventato chiaro...
Ho trascorso l'ultima settimana e ho creato un transpiler di classi bash e un caricatore di classi per oggetti di classe, con metodi e altre chicche .. tutto perché volevo creare un'infrastruttura di animazione terminale:
Quindi, anche se questo è solo l'inizio, ho scoperto che si tratta di un'avventura SUPER interessante e stimolante.. Spero che il mio codice possa aiutare anche qualcun altro!!
A proposito:è stato testato solo su MAC OS, quindi potrebbero essere necessarie alcune modifiche :)
Puoi provare a fare qualcosa del genere
esempio.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
}
system.h
. system.class
system.class
system.stdout.printValue(){
echo $([email protected])
}
system.stdout.printString(){
echo [email protected]
}
Link per riferimento:https://github.com/mnorin/bash-scripts/tree/master/objectsIl punto è che non puoi creare oggetti ma puoi emulare la programmazione orientata agli oggetti in bash