[ BASH 쉘 ] 에러 발생

   조회 3278   추천 0    

하기와 같이 실행하였는데, 에러가 발생하고 있습니다.

간단한 쉘 같은데, 에러가 발생하는 이유가 파악이 안되고 있습니다.

DEBIAN 및 Mac OS X에서도 동일한 현상이 발생합니다.

아시는 분의 고견 부탁 드려 봅니다.


#> wget http://216.165.129.135/distfiles/prettyping-1.0.1.tar.gz

#> tar xzvf prettyping-1.0.1.tar.gz

#> cd prettyping-1.0.1

#> chmod +x prettyping


#> ./prettyping

./prettyping: line 162: syntax error near unexpected token `"$1"'

./prettyping: line 162: `                PING_PARAMS+=("$1")'



#> vi prettyping

...

      #TODO: Check if these parameters are numbers.

      -last    | --last    ) LAST_N="$2"           ; shift ;;

      -columns | --columns ) OVERRIDE_COLUMNS="$2" ; shift ;;

      -lines   | --lines   ) OVERRIDE_LINES="$2"   ; shift ;;

      -rttmin  | --rttmin  ) RTT_MIN="$2"          ; shift ;;

      -rttmax  | --rttmax  ) RTT_MAX="$2"          ; shift ;;


      * )

        PING_PARAMS+=("$1")                                      <======================== !!!

        ;;

    esac

    shift






짧은글 일수록 신중하게.
화란 2019-05
PING_PARAMS+=("$1")

이 부분이 엄한 옵션을 넣었으니 다시넣어라는 목적인가요 ?

exit 로 바꾸고 엄한 옵션 넣었을때 종료되면 문법오류 아닌가요 ?
무아 2019-05
프로그램 실행시 그 뒤에 파라미터를 더 넣어야 하는 거 아닌가요?
     
실제 값을 넣어도 동일한 에러가 발생합니다.

#> ./prettyping 1.1.1.1
./prettyping 1.1.1.1
./prettyping: line 162: syntax error near unexpected token `"$1"'
./prettyping: line 162: ` PING_PARAMS+=("$1")'
pil4 2019-05
archlinux에서 다운받아서 해봤는데 실행 잘됩니다. 뭔가 다른 문제인듯 합니다.
online9 2019-05
Oracle Linux 7.6에서 실행 잘됩니다.
큰 의미가 없는 듯한데 첫번째 라인 #!/usr/bin/env bash => #!/usr/bin/bash로 직접 bash로 지정해보세요
/usr/bin/bash --version으로 버전 확인해 보세요
오류가 난 해당 라인의 의미는 - 혹은 -- 옵션을 주면 해당 옵션자체가 $1 파라미터가 되고
$2는 해당 옵션에 준 값을 의미하는 것으로 표시하신
 PING_PARAMS+=("$1")  부분은 이런 옵션을 주지 않으면 이게 바로 ping option이 됩니다.
그리고 - 혹은 -- 옵션 뒤어 shift는 쉡에 지정한 파라미터를 하나씩 앞으로 당기게 됩니다.
 ./prettyping -last 10 192.168.0.11 이렇게 수행했다고 가정하면 다음과 같습니다.
case문에 -last    | --last 옵션에서 이게 $1 값으로 매칭되고 뒤에 지정한 값이 $2가 됩니다.
그런후 값이 하나 shift 해서 옮기고 case문 종료(esac)후 값을 하나 shift 시켜서
결국 ip 값이 PING_PARAMS에 배열로 추가됩니다.
지정한 모든 파라미터를 파싱할때까지 while문이 돕니다.
command parameter parsing 일반적인 방법입니다.
그리고 ping이 OS 마다 option이 조금씩 다릅니다.


QnA
제목Page 1044/5705
2014-05   5126921   정은준1
2015-12   1661872   백메가
2020-07   3237   전설속의미…
2020-05   3237   한철희
2019-09   3237   meansal
2021-07   3237   조우진cas
2019-07   3237   차이하네
2020-09   3237   프랑
2017-09   3237   AplPEC
2017-09   3237   허니영호
2014-05   3237   나비z
2021-09   3237   pilsuni
2020-07   3238   kiwiss33
2017-08   3238   코쿠
2020-12   3238   농약맛달콤
2015-08   3238   비밀소년
2017-09   3238   노가리강추
2021-05   3238   NaHS
2019-01   3238   닉이요
2023-11   3238   공백2
2020-07   3238   강한구
2019-08   3239   Jasper