2016-04-21 24 views
2

我試圖使用bash腳本來使腳本像電話簿一樣行動,因此我試圖創建類和對象,但不幸的是我找不到這樣做的方法! 所以我問如何使用bash腳本創建一個類?使用bash腳本創建類和對象

+4

你不能; 'bash'不是一個面向對象的語言。 – chepner

回答

6

Bash是一種腳本語言,它不支持OOP,所以你不能。嘗試Python。

你可以做的唯一的其他事情是有幾個數組,但這很混亂。使用索引來鏈接它們。

14

你可以嘗試做這樣的事情

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] 
} 

鏈接以供參考:https://github.com/mnorin/bash-scripts/tree/master/objects 的一點是,你不能創建對象,但你可以在bash模仿面向對象編程

+0

對於這個問題的實際答案,即使它在技術上沒有一個,加上創造力的10。人們必須明白麪向對象纔是一個概念。如果你把它分解成二進制,反正沒有什麼是固有的「OOP」。那麼爲什麼不在Shell中有像上面那樣的對象。 –

+0

任何黑客繼承? – cprn