Invólucro de script de shell para evitar o comando em execução sem argumentos?

4

Existe um programa que eu uso, digamos xyz , que tem efeitos indesejáveis se eu executar o comando sem argumentos. Então, eu gostaria de evitar executar acidentalmente o comando xyz sem argumentos, mas permitir que ele seja executado com argumentos.

Como posso escrever um script de shell para que, ao chamar xyz sem argumentos, ele imprima uma mensagem de erro e passe todos os argumentos para o programa xyz ?

    
por User 12.11.2014 / 14:51

2 respostas

9

Você pode verificar a variável especial $ # :

if [ $# -eq 0 ]; then
  echo "No arguments provided!"
  exit 1
fi
/usr/bin/xyz "$@"

Em seguida, adicione um alias ao seu ~/.bashrc ;

alias xyz="/path/to/script.sh"

Agora, cada vez que você executar xyz , o alias será lançado. Isto irá chamar o script que verifica se você tem algum argumento e apenas inicia o comando xyz real se você o fizer. Obviamente, altere /usr/bin/xyz para qualquer que seja o caminho completo do comando.

    
por 12.11.2014 / 14:56
0

Na maioria dos casos, o quadro pode ser

if [ "$1" ]
then
  /usr/bin/xyz "$@"
else
  echo "Errormessage"
fi 
    
por 12.11.2014 / 14:54