명령줄에서 bash 함수 실행

명령줄에서 bash 함수 실행

나는 bash 스크립트를 많이 가지고 노는 것을 좋아합니다. 하지만 bash 스크립트를 사용하는 방식을 향상시키고 싶습니다. nepleaks.sh프로그래밍 중에 아래와 같은 스크립트( )가 사용되었습니다 .

~   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  

프로젝트 가 필요할 때 clean댓글을 달고 runApp그 반대의 경우도 있었습니다.

$./nepleaks

이제 이것을 다음과 같이 수정하고 싶습니다.

$ nepleaks clean or $ nepleaks runApp

nepleaks.sh나는 소싱을 한 다음 clean또는 에 전화하는 아이디어가 마음에 들지 않았습니다 runApp.

내가 사용한 사랑스러운 것 중 하나는 다음과 같습니다.https://github.com/cosmin/s3-bash/blob/master/s3-get, 조사 중이지만 스크립트가 복잡해 보였습니다. 그들은 아래와 같은 것을 지원합니다.

s3-get -k {accesskey} -s /{path}/{secretid} /{bucketname}

답변1

이 시도:

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

이제 다음을 수행할 수 있습니다.

$ ./nepleaks clean # only run clean
$ ./nepleaks runApp # only runApp

답변2

$ cat <./nepleaks.sh && chmod +x ./nepleaks 
> #!/usr/bin/sh
>
> clean() { ... ; }
> runApp() { ... ; }
> 
> ${clean+clean}
> ${runApp+runApp}

...

$ env - clean= ./nepleaks.sh
# ^runs only clean()^ # 

관련 정보