GNU/Linux >> Znalost Linux >  >> Linux

Vytváření tříd a objektů pomocí skriptování bash

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


Linux
  1. Prozkoumání Podman RESTful API pomocí Pythonu a Bash

  2. Jak vytvořit Bash skripty pomocí externích proměnných a vložených skriptů

  3. Bash skriptování (I)

  1. Problém se skriptováním Bash – porovnat dva seznamy a vytvořit třetí?

  2. najít a zkopírovat soubor pomocí Bash

  3. Pomocí a ve smyčce Bash while

  1. Skriptování Bash – smyčka dokud a dokud vysvětlená s příklady

  2. vytvoření adresáře z názvu souboru a přesunutí bash

  3. Chování polí ve skriptování bash a shellu zsh (počáteční index 0 nebo 1?)