Bash je skriptovací jazyk, který nepodporuje OOP, takže nemůžete. Zkuste Python.
Jediná další věc, kterou byste mohli udělat, je mít několik polí, ale to je chaotické. K jejich propojení použijte index.
Takže si pamatuji, že jsem před několika lety kontroloval tuto otázku a odpovídal jsem... a přemýšlel jsem... COŽE!?!?!
Minulý týden jsem se blíže podíval na odpověď @Maxims a pak bylo jasno..
Strávil jsem poslední týden a vytvořil jsem transpiler třídy bash a zavaděč třídy pro objekt třídy s metodami a dalšími vychytávkami... to vše proto, že jsem chtěl vytvořit infrastrukturu animace terminálu:
Takže i když je to jen začátek, zjistil jsem, že je to SUPER skvělé a náročné dobrodružství. Doufám, že můj kód pomůže i někomu dalšímu!!
BTW:Testováno pouze na MAC OS, takže může být potřeba nějaké doladění :)
Můžete zkusit udělat něco takového
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)
}
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]
}
Odkaz pro referenci:https://github.com/mnorin/bash-scripts/tree/master/objects Jde o to, že nemůžete vytvářet objekty, ale můžete emulovat objektově orientované programování v bash