GNU/Linux >> Linux Esercitazione >  >> Linux

Creazione di classi e oggetti utilizzando lo scripting bash

Bash è un linguaggio di scripting, che non supporta OOP, quindi non puoi. Prova Python.

L'unica altra cosa che potresti fare è avere diversi array, ma è disordinato. Usa l'indice per collegarli.


Quindi ricordo di aver controllato questa domanda e di aver risposto qualche anno fa... e stavo pensando... COSA!?!?!

Poi la scorsa settimana ho dato un'occhiata più da vicino alla risposta di @Maxims ed è diventato chiaro...

Ho trascorso l'ultima settimana e ho creato un transpiler di classi bash e un caricatore di classi per oggetti di classe, con metodi e altre chicche .. tutto perché volevo creare un'infrastruttura di animazione terminale:

Quindi, anche se questo è solo l'inizio, ho scoperto che si tratta di un'avventura SUPER interessante e stimolante.. Spero che il mio codice possa aiutare anche qualcun altro!!

A proposito:è stato testato solo su MAC OS, quindi potrebbero essere necessarie alcune modifiche :)


Puoi provare a fare qualcosa del genere

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

Link per riferimento:https://github.com/mnorin/bash-scripts/tree/master/objectsIl punto è che non puoi creare oggetti ma puoi emulare la programmazione orientata agli oggetti in bash


Linux
  1. Esplorazione dell'API RESTful di Podman utilizzando Python e Bash

  2. Come creare script Bash utilizzando variabili esterne e script incorporati

  3. Script Bash(I)

  4. Problema di scripting Bash:confrontare due elenchi e crearne un terzo?

  5. trova e copia il file usando Bash

Bash Beginner Series #5:Utilizzo di operatori aritmetici negli script Bash

Bash Scripting Part6 – Crea e usa le funzioni Bash

Linux Bash Scripting Part5 – Segnali e lavori

Bash Scripting Part2 – Cicli For e While con esempi

Procedura:Programmazione orientata agli oggetti – Altro con classi e oggetti

Bash Scripting:come generare e formattare il testo su Linux Shell