Bash. Tegyen be egy függvényhívása hívási verem

szavazat
-1

Próbálok létrehozni „valami funkciója akasztó rendszer” egy bash script. A fő bash script már létezik, és a lényeg az, hogy képes létrehozni valamilyen plugin rendszert annak érdekében, hogy hagyja, hogy a felhasználók számára, hogy kis Bash script tartalmazó saját cucc alatt a három módszer:

  • Prehooking -> felhasználók képesek lesznek létrehozni egy olyan funkciót hajtja végre, mielőtt a funkciója a fő script általuk választott
  • Elsőbbség -> felhasználók képesek lesznek felülírni teljesen függvényében fő script, hogy átírják az egyéni tartalom
  • Posthooking -> felhasználók képesek lesznek létrehozni egy funkció, amely azonnal végrehajtható után függvényében fő script általuk választott

Már dolgozik a plugins rendszer prehooking és kényszerítő funkciókat. A fő script feldolgozza a kis plugin szkriptek és a következő néhány szabályok és kidolgozása (nómenklatúra stb ...), ha a bővítmény is jól sikerült, hogy működik.

A problémám próbál kialakítani a posthooking funkciót, és keresem az ötleteket. Ennek az az oka, mert a prehooking, azt átírni a teljes funkció csinál egy sed át annak tartalmát, és keresi az első {megjelenése a helyébe { call_to_prehook, és úgy működik, mint a karikacsapás. De nem tudok csinálni ugyanazt a posthooking. Én nem helyettesíti az utolsó megjelenése a }beállítani valami hasonló call_to_posthook }, mert ha ez a funkció a visszatérés nem fog működni. Ez posthook lesz soha nem lehet elérni.

Most küzdök lenne, ha lehetséges lenne, hogy „adja” a funkció hívás a verem, vagy valami ilyesmi. Nem biztos, hogy a bash a „fa hívások” lehet ellenőrizni, még mielőtt el tőle.

Egy kis PoC jobb megértéséhez:

#!/bin/bash
#Main script

function main() {
    magic_function
    one
    two
}

function one() {
    echo one
}

function two() {
    echo two
}

function magic_function() {
    echo this function parses plugins and execute needed stuff to modify functions
    echo I hope to find some way here to do possible the posthooking
}

#!/bin/bash
#Plugin done by somebody

function posthook_one() {
    echo stuff to be executed after function one of the main script
}

Azt hiszem, hogy végre egy posthooking funkció egy meg lehetne tenni ellátó prehooking funkció két, de ez nem érvényes gondolat számomra miatt bonyolult a valós forgatókönyv, és persze azért, mert ezen a módon, az utolsó funkció nem tudott kell posthooked.

Bármilyen ötlete? Kösz.

A kérdést 10/10/2019 00:56
a forrás felhasználó
Más nyelveken...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more