Instruções embutidas no script Bash?

0

Existe uma maneira de fazer um script bash requerer um conjunto de parâmetros quando ele é carregado, e se não, ele irá automaticamente cuspir um echo na tela dando instruções?

Olhando para este exemplo de um script chamado copy

user@localhost : user # ./copy  
Copy by SamplePerson  
Usage:  
copy [path/to/file] [path/to/destination]  
user@localhost : user #

Eu quero ter certeza de que se nenhum parâmetro for dado, ele irá automaticamente citar algum texto pré-definido no echo .

Eu sei como garantir que o usuário insira os valores corretos, mas quero apenas que as informações iniciais de "uso" sejam exibidas para eles.

    
por Danijel-James W 01.10.2013 / 10:17

2 respostas

1

Costumo usar um constructo como este:

case "$1" in
    'start')
        startProfile
        ;;

    'stop')
        stopProfile
        ;;

    'restart')
        stopProfile
        startProfile
        ;;

    *)
        echo "Usage $0 start|stop|restart <profile|application>"
esac

Você tem um caso de comutação que lida com os casos normais e, se nenhum deles se encaixa, o caso padrão imprime as instruções de uso.

    
por 01.10.2013 / 10:29
2

Você pode tentar algo assim:

#!/usr/bin/bash

[ $# -eq 0 ] && cat <<XXX && exit 0;
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]
XXX

echo Check args "$@"

Execução da amostra:

# ./test.sh
Copy by SamplePerson
Usage:
copy [path/to/file] [path/to/destination]

# ./test.sh -x -y
Check args -x -y

Você pode processar argumentos de maneira muito conveniente usando as getopts bash getopt (3) externo (especialmente se você usar argumentos longos (por exemplo, --longopt)).

    
por 01.10.2013 / 10:29