GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Erstellen von Klassen und Objekten mit Bash-Scripting

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


Linux
  1. So erstellen Sie Bash-Skripte mit externen Variablen und eingebetteten Skripten

  2. Bash-Scripting(I)

  3. Suchen und kopieren Sie die Datei mit Bash

  4. Verzeichnis aus Dateiname erstellen und Bash verschieben

  5. Verhalten von Arrays in Bash-Scripting und ZSH-Shell (Startindex 0 oder 1?)

Bash-Anfängerserie Nr. 5:Verwenden von arithmetischen Operatoren in Bash-Skripten

Bash-Scripting Teil 6 – Erstellen und Verwenden von Bash-Funktionen

Linux Bash Scripting Part5 – Signale und Jobs

Bash-Scripting Teil 2 – For- und While-Schleifen mit Beispielen

Gewusst wie:Objektorientierte Programmierung – Mehr mit Klassen und Objekten

Bash-Skripting:So geben Sie Text in der Linux-Shell aus und formatieren ihn