GNU/Linux >> Znalost Linux >  >> Linux

Jak mohu spustit funkci ze skriptu v příkazovém řádku?

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

Linux
  1. Jak otestovat Oom-killer z příkazového řádku?

  2. Jak spouštět skripty Pythonu ze shellu

  3. Jak mohu vyloučit adresář z příkazu ls

  1. Jak spustit příkaz Vim z shellu?

  2. Jak mohu zapisovat do dmesg z příkazového řádku?

  3. Jak spustit TeX z rozhraní příkazového řádku v Linuxu

  1. Jak spouštět dotazy MySQL/MariaDB přímo z příkazového řádku Linuxu

  2. Jak se automaticky připojit z příkazového řádku?

  3. Jak mohu správně spouštět skripty příkazového řádku Perl one-liner?