GNU/Linux >> Linux の 問題 >  >> Linux

bash スクリプトを使用してクラスとオブジェクトを作成する

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 でオブジェクト指向プログラミングをエミュレートできることです


Linux
  1. PythonとBashを使用したPodmanRESTfulAPIの調査

  2. Bashスクリプトの問題– 2つのリストを比較して、3つ目のリストを作成しますか?

  3. bash スクリプトと zsh シェルでの配列の動作 (開始インデックス 0 または 1?)

  1. 外部変数と埋め込みスクリプトを使用してBashスクリプトを作成する方法

  2. Bashスクリプト(I)

  3. Bash を使用してファイルを検索してコピーする

  1. Bashスクリプティング–ループが例で説明されている間とまで

  2. Bash while ループで and を使用する

  3. ファイル名からディレクトリを作成し、bashを移動します