A função não é executada no script

0

Eu criei esse script chamado ShellScript.sh e neste script é o seguinte:

#!/bin/sh
# Shell script 

function help {
  echo ""
  echo "./ShellScript.sh {start | stat}"
  echo ""
  echo "These are some commands:"
  echo ""

  # Start command
  echo "start"
  echo "This starts the process"
  echo ""

  # Stat command
  echo "stat"
  echo " abcxyz"
  echo ""
}

No entanto, na linha de comando, quando digito "./ShellScript.sh help", nada acontece. Eu tenho tentado descobrir esse problema por um dia e tenho certeza que estou sentindo falta de algo pequeno, mas eu não sei o que é isso!

    
por Leah 12.07.2017 / 15:15

2 respostas

2

Não está claro qual é o seu objetivo final, mas chamar ./ShellScript.sh help passa o parâmetro "ajuda" para o script; como Arkadiusz Drabczyk comentou, tudo o que o ShellScript.sh está fazendo é configurar uma função e depois sair.

Parece que você está construindo um script baseado em opções para iniciar ou determinar um processo, caso em que você precisa de algum código de nível "principal" para analisar os parâmetros e chamar a (s) função (ões).

Por exemplo, adicione isso ao final do seu ShellScript.sh:

case "$1" in
start)
    echo "This starts the process"
    ;;
stat)
    echo "stat"
    echo " abcxyz"
    ;;
help)
    help
    ;;
*)
    echo "usage: $0 start|stat"
    ;;
esac

Como sugestão, "stat" é realmente similar (para humanos) para "iniciar"; considere "status" em vez disso?

    
por 12.07.2017 / 15:31
0

Você definiu uma função, mas na verdade não fez nada com ela. Você precisaria chamar essa função no script. Se isto está trabalhando em direção a uma abordagem mais geral onde você quer chamar uma das várias funções dependendo do argumento do seu script, simplesmente faça isso (eu mostrei apenas parte dele, adicionando '$' 'no final):

    # Stat command
    echo "stat"
    echo " abcxyz"
    echo ""
}

$1
    
por 12.07.2017 / 15:30