[ BASH 쉘 ] 에러 발생

   조회 3419   추천 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 1049/5711
2014-05   5165546   정은준1
2015-12   1699777   백메가
2021-03   3288   Ibory
2016-08   3288   적계
2018-08   3288   머재긴
2018-07   3288   Noname1
2022-10   3288   김황중
2021-05   3288   NaHS
2018-04   3288   빌라비아
2020-12   3288   알수없는힘
2024-04   3288   강한구
2019-08   3288   김건우
2017-04   3288   sensekuh
2017-05   3288   수퍼맨1
2020-01   3288   주황별
2018-07   3288   박문형
2017-07   3289   킵고잉
2018-10   3289   이원재K
2015-07   3289   김지철
2017-03   3289   쌍cpu
2021-07   3289   백룡
2019-09   3289   초보조종사