Portál AbcLinuxu, 6. května 2025 22:44
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.