Qual é a melhor maneira de fazer uma função bash em um script como um parâmetro ao executar via linha de comando?

2

Sou relativamente novo no bash scripting, e me perguntei qual é a maneira mais simples de fazer funções de script bash em um script como o parâmetro quando executado via linha de comando?

Exemplo de uso:

./myscript function1
./myscript function2

Exemplo de conteúdo do myscript:

echo "Example myscript"

function1() { 
    echo "I am function number 1"
}

function2() { 
    echo "I am function number 2"
}

if [ $# -eq 0 ]; then
    echo "Specify a function. E.g. function1"
    exit 1;
fi

O script só executaria a função específica quando chamado na linha de comando, caso contrário, mostraria algum uso de exemplo. Ele precisaria ser usado pelo cron e por tais processos, bem como executado por um usuário.

    
por James White 30.04.2015 / 16:32

1 resposta

5

Todos os argumentos passados para o shell script foram armazenados em $ @ , você pode fazer um loop através deles:

#!/bin/bash

echo "Example myscript"

function1() { 
    echo "I am function number 1"
}

function2() { 
    echo "I am function number 2"
}

if [ $# -eq 0 ]; then
    echo "Specify a function. E.g. function1"
    exit 1;
fi

for func do
  [ "$(type -t -- "$func")" = function ] && "$func"
done

[ "$(type -t -- "$func")" = function ] certifica-se de que só fazemos chamadas de função quando $func é função.

Exemplo:

$ ./test.sh function1
Example myscript
I am function number 1

$ ./test.sh function1 function2
Example myscript
I am function number 1
I am function number 2
    
por 30.04.2015 / 16:39