Portál AbcLinuxu, 11. prosince 2025 23:27
prolízt a naparsovat :O :O
hóóóóóóóódně jednoduchý py spojovadlo *.sh souborů :O :O
#!/usr/bin/env python3
# TODO: nehlídá to dělání 'cd'!!!!!!!!!
# taky neinterpretruje proměný kdyby třeba byly strčený do názvu tý cestičky ke spriptu!!!!! :O :O
def radek_obsahuje_import(radek):
kusy = radek.split(" ")
if len(kusy) < 2:
return None
if kusy[0] == "source" or kusy[0] == ".":
return kusy[1].strip()
return None
# rekurzivně prolezem soubor a natáhnem všecky bashovský importy
def zpracovat_soubor(nazev_souboru):
vystup = []
vstup_radky = []
with open(nazev_souboru, "r") as soubor:
vstup_radky = soubor.readlines()
soubor.close()
for radek in vstup_radky:
imp = radek_obsahuje_import(radek)
if imp is not None:
print(f"importuju soubor: {imp}")
obsah_dalsiho_souboru = zpracovat_soubor(imp)
print(obsah_dalsiho_souboru)
# odstranění shebangu (by asi jako stačilo zahazovat dycky prvni radek jestli je dycky nazacatku :O :O)
# možná bude potřebovat naparsovat další veci různý jako stejný názvy různejch fcí etc :O :O
for r in obsah_dalsiho_souboru:
if "#!" in r:
obsah_dalsiho_souboru.remove(r)
break
vystup += obsah_dalsiho_souboru
else:
print(radek)
vystup.append(radek)
return vystup
if __name__ == "__main__":
vstupni_soubor = "vstup.sh"
vystupni_soubor = "velikatatatatatanskej_vystupni_skript.sh"
with open(vystupni_soubor, "w") as soubor:
vystup = zpracovat_soubor(vstupni_soubor)
if vystup is not None:
soubor.writelines(vystup)
soubor.close()
print("hotovo!!!!!!!!!!!!!!!!!!!!!!!!!!!")
dodělej si sám :D
source v podmínce, která se nevykoná, nebo se bude dělat source $proměnná, která se uvnitř kódu nějak vypočítala. V takových případech neexistuje jiná možnost, než to spustit a sledovat - můžete si zkusit ukázat, že kdyby se to umělo rozhodovat staticky, tak lze takovým programem řešit halting problem
.
nj neni to nic supr :D ale nevíme jak moc složitý ty jeho skripty sou je možný že jestli toje nějaká jednoduchá lepenina by mu to mohlo takle stačit :D
u toho hooknutí source by mu to taky teroreticky nemuselo nějakou podmínku/proměnou minout podle vokolností různejch + tim 'načíst do jednoho souboru' asi jako op myslel sloučit ty skripty do jedno víc věčího než jakoby jenom vypsat dosouboru :O :O
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.