2016-04-21 3 views
2

Ich versuche Bash Scripting zu verwenden, um ein Skript wie ein Telefonbuch zu handeln, , also habe ich versucht, Klassen und Objekte zu erstellen, aber leider konnte ich keinen Weg finden, das zu tun! Also frage ich, wie man eine Klasse mit Bash-Scripting erstellen ??Erstellen von Klassen und Objekten mit bash scripting

+4

Sie können nicht; 'bash' ist keine objektorientierte Sprache. – chepner

Antwort

6

Bash ist eine Skriptsprache, die OOP nicht unterstützt, so dass Sie nicht können. Versuchen Sie Python.

Die einzige andere Sache, die Sie tun könnten, ist mehrere Arrays zu haben, aber das ist chaotisch. Verwenden Sie den Index, um sie zu verknüpfen.

14

können Sie versuchen, so etwas wie dieses

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

zu tun
. system.class 

system.class

system.stdout.printValue(){ 
    echo $([email protected]) 
} 

system.stdout.printString(){ 
    echo [email protected] 
} 

Link-Referenz: https://github.com/mnorin/bash-scripts/tree/master/objects Der Punkt ist, dass Sie keine Objekte erstellen können, aber Sie können die objektorientierte Programmierung in bash emulieren

+0

Eine tatsächliche Antwort auf die Frage, obwohl es technisch keine, plus 10 für Kreativität hat. Man muss verstehen, OOP ist nur ein Konzept. Wenn Sie es in binäre zerlegen, ist nichts inhärent "OOP" sowieso. Warum also nicht einfach Objekte in Shell wie oben? –

+0

Jeder Hack für die Vererbung? – cprn

Verwandte Themen