Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Vojtěch Hutla 23. 03. 2014, 16:55:49
-
Zdravím,
mám skript, který obsahuje několik jednoduchých funkcí. Rád bych tyto funkce volal pomocí proměnných, např.
./muj-skript.sh archivuj
zavolá funkci archivuj, která by v tomhle případě vytvořila archiv.
Ale nevím, jak docílit, aby skript funkci zavolal. Nevíte někdo, jak na to?
-
Tomu se říká parametry a ve scriptu je získáš takto: $0
Ale začal bych u "Bash for dummies".
-
Tomu se říká parametry a ve scriptu je získáš takto: $0
Ale začal bych u "Bash for dummies".
Byt vami, tak zacnu u nejake ucebnice cestiny, autor topicu hleda dle popisu funkci eval, tudiz staci pouzit
eval $1
(uz jenom proto, ze prvni argument je nazev spousteneho scriptu, tak potrebuje druhy)
nejaka funkcni ukazka treba tady
#!/bin/bash
prvni(){
echo "Prvni funkce"
}
druha(){
echo "Druha funkce"
}
eval $1
a pro kontrolu, zda funkce existuje, jde pouzit napr declare (declare -F "nazevfunkce" vrati "nazevfunkce", pokud existuje)
-
eval $1
Ale fuj, eval na neosetreny vstup je zlo, pak nekdo zavola ./muj-script.sh "rm -rf /" a bude po srande.
Co takhle stary dobry switch?
case "$1" in
archivuj)
do_stuff;
;;
esac
-
...
Ale fuj, eval na neosetreny vstup je zlo, pak nekdo zavola ./muj-script.sh "rm -rf /" a bude po srande.
...
no to je :) zapomnel jsem to tam napsat... ono inspirovat se autor muze treba v init scriptech, tam se tohle pouziva bezne (switch)