Pense em funções como mini-scripts dentro de um script. Eles são ignorados pelo script até serem chamados. Portanto, os parâmetros posicionais são ignorados até serem passados para a função.
Eles são limitados quanto ao que podem fazer. Eu sei que eles não podem suportar if then
declarações dentro da função como eles são ignorados. E existem algumas outras regras, mas você pode exit
do seu script de dentro de uma função. Se você verificar erros nos parâmetros, esses devem ser executados antes que a função seja chamada.
Você está querendo passar parâmetros posicionais ($ 1, $ 2, $ 3 etc ...) para o seu script. No entanto, você está esperando o parâmetro posicional a ser passado para a função. Sem especificar o parâmetro quando você chama a função, a função não está recebendo o parâmetro. Você precisa dar o parâmetro.
Pegue seu script:
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello
Simplesmente adicionando um $1
à linha que diz apenas hello
por si só fará com que o parâmetro seja passado para a função.
#!/bin/bash
function hello () {
echo "Hello $1"
}
hello $1
Agora, chamar o script com um parâmetro produzirá a saída desejada:
$ ./myscript Terrance
Hello Terrance
Se você quiser adicionar uma verificação rápida a ela para que não receba entrada em branco após o script, adicione a seguinte verificação em seu script antes da chamada:
#!/bin/bash
function hello () {
echo "Hello $1"
}
if [[ $1 != "" ]]; then
hello $1
exit
else
echo "Please input a name. Example: $0 Terrance"
fi
Meu script de exemplo acima faz uma verificação de !=
, o que significa not equal to
, em seguida, os dois ""
significam em branco. Portanto, if parameter 1 is not equal to blank then
é true, em seguida, ele executa a chamada de função com o parâmetro e sai do script depois que a função é chamada. Senão dá minha mensagem de erro. O parâmetro posicional de $0
é o parâmetro do comando que você acabou de chamar.
Exemplos do meu script sendo chamado:
$ ./myscript
Please input a name. Example: ./myscript Terrance
$ ./myscript Terrance
Hello Terrance
Conforme você mantém o script, você começa a aprender mais truques e comandos apropriados e como eles são usados. Continue no script !!
Espero que isso ajude!