execução da função bash a partir da linha de comando

3

Adoro brincar muito com o script bash. Mas eu quero melhorar a maneira como eu uso script bash. Eu tenho um script ( nepleaks.sh ) como abaixo usado durante a minha programação,

~   1 clean(){                                                                                                                                                                  
~   2  lein clean                                                                                         
+   3  lein deps                                                                                          
+   4 }    
    5                                                                                                     
    6 runApp(){                                                                                           
    7   echo("[info] : make sure you've started neo4j.")                                                 
    8   #lein run -m nepleaks-engine.core  
    ............
   34         
   35 clean                                                                                              
   36 #runApp  

Quando preciso de clean meu projeto, tenho comentado sobre runApp e vice-versa e, em seguida, aciono

$./nepleaks

Agora, quero alterar isso para algo como

$ nepleaks clean or $ nepleaks runApp

Não gostei da ideia de pesquisar nepleaks.sh e, em seguida, ligar para clean ou runApp .

Aqui está uma das coisas mais legais que eu usei link , estou procurando, mas seu roteiro parecia complexo para mim. Eles apoiam algo como abaixo,

s3-get -k {accesskey} -s /{path}/{secretid} /{bucketname}
    
por prayagupd 19.06.2014 / 07:27

2 respostas

6

Tente isto:

case "$1" in
  (clean) 
    clean
    exit 1
    ;;
  (runApp)
    runApp
    exit 0
    ;;
  (*)
    echo "Usage: $0 {clean|runApp}"
    exit 2
    ;;
esac

Agora você pode fazer:

$ ./nepleaks clean # only run clean
$ ./nepleaks runApp # only runApp
    
por 19.06.2014 / 08:22
1
$ cat <./nepleaks.sh && chmod +x ./nepleaks 
> #!/usr/bin/sh
>
> clean() { ... ; }
> runApp() { ... ; }
> 
> ${clean+clean}
> ${runApp+runApp}

...

$ env - clean= ./nepleaks.sh
# ^runs only clean()^ # 
    
por 19.06.2014 / 09:43