Bash は OOP をサポートしないスクリプト言語なので、できません。 Python を試してください。
他にできる唯一のことは、いくつかの配列を持つことですが、それは面倒です。索引を使用してそれらをリンクしてください。
それで、私は数年前にこの質問と回答をチェックしたことを覚えています..そして考えていました....何!?!?!
それから先週、@Maximsの回答を詳しく調べたところ、明らかになりました..
この 1 週間を費やして、クラス オブジェクト用の bash クラス トランスパイラとクラス ローダーを作成しました。メソッドやその他の機能も備えています。すべての理由は、ターミナル アニメーション インフラストラクチャを作成したかったからです。
これはほんの始まりにすぎませんが、これは非常にクールでやりがいのある冒険であることがわかりました..私のコードが他の誰かにも役立つことを願っています!!
ところで:MAC OS でのみテストされているため、微調整が必要になる場合があります :)
このようなことを試すことができます
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 でオブジェクト指向プログラミングをエミュレートできることです