Pokud skript pouze definuje funkce a nedělá nic jiného, můžete skript nejprve spustit v kontextu aktuálního shellu pomocí source
nebo .
příkaz a pak jednoduše zavolejte funkci. Viz help source
pro více informací.
Následující příkaz nejprve zaregistruje funkci v kontextu a poté ji zavolá:
. ./myScript.sh && function_name
No, zatímco ostatní odpovědi jsou správné - určitě můžete udělat něco jiného:pokud máte přístup k bash skriptu, můžete jej upravit a jednoduše umístit na konec speciální parametr "[email protected]"
- který se rozšíří na argumenty příkazového řádku, který určíte, a protože je "sám", shell se je pokusí volat doslovně; a zde můžete zadat název funkce jako první argument. Příklad:
$ cat test.sh
testA() {
echo "TEST A $1";
}
testB() {
echo "TEST B $2";
}
"[email protected]"
$ bash test.sh
$ bash test.sh testA
TEST A
$ bash test.sh testA arg1 arg2
TEST A arg1
$ bash test.sh testB arg1 arg2
TEST B arg2
V případě polštiny můžete nejprve ověřit, že příkaz existuje a je funkcí:
# Check if the function exists (bash specific)
if declare -f "$1" > /dev/null
then
# call arguments verbatim
"[email protected]"
else
# Show a helpful error
echo "'$1' is not a known function name" >&2
exit 1
fi