2016-07-04 2 views
3

쉘 스크립트를 처음 사용하고 jmeter의 쉘 스크립팅 작업을하고 있습니다. 지금까지 jmeter 스크립트를 실행하기 위해 아래와 같이 쉘 스크립트를 작성했습니다 :쉘 스크립트의 명령 줄 인수를 사용하여 매개 변수를 전달하는 방법

#! bin/sh  
start(){ 
    echo "Please enter the file name .jmx extension" 
    read file 

echo "Please enter the log file name .jtl extension" 
read log_file 

jmeter.sh -n -t $file -l $log_file 
} 
while [ "$1" != "" ]; do 
case "$1" in 
     start) 
      start 
      ;; 
     *) 
      echo $"Usage: $0 {start|stop}" 
      exit 1 
     esac 
    shift 
done 

나는 프로세스를 종료하기위한 중지 방법이 있습니다. 이 스크립트에서는 사용자에게 .jmx fileName과 .jtl fileName을 다른 줄에 입력하라고합니다. 그러나 사용자가 스크립트를 실행하기 위해 명령을 입력 할 때 .jmx fileName과 .jtl fileName을 전달할 수있게하려고합니다.

예 : $ ./script.sh .jmx fileName .jtl fileName 스크립트가 실행되어야합니다.

나는 어떻게 해야할지 모르겠다. 누군가 제발 도와 줄 수 있니?

{ echo "file.jmx"; echo "file.jtl"; } | ./script.sh start 

정돈 될 수있는 여기-문서를 사용 :

./script.sh start <<END_INPUT 
file.jmx 
file.jtl 
END_INPUT 

코드 검토의 비트 read 이후

답변

1

은 표준 입력에서 읽고, 당신은 표준 입력에서 파일 이름을 전달해야 : 사용법이 하나의 매개 변수, "시작"또는 "중지"만 사용하는 경우 while 루프가 필요하지 않습니다.

,093,210

모든 매개 변수를 사용하는 스크립트를 다시 작성하려면

#!/bin/sh 

usage() { 
    echo "Usage $0 {start ...|stop}" 
    # provide more info about arguments for the start case 
    # provide an example usage 
} 

case "$1" in 
    stop) do_stop_stuff ;; 
    start) 
     shift 
     if [ "$#" -ne 4 ]; then usage; exit 1; fi 
     jmeter.sh -n -t "$1" "$2" -l "$3" "$4" 
     ;; 
    *) usage ;; 
esac 
+0

내가 fileName' .jtl이'$ ./script.sh .jmx fileName에 같은 한 줄 명령을 사용하여 스크립트를 실행하려면 스크립트가 완료된 후 jenkins에서 매개 변수화 된 스크립트를 실행합니다. – user6348718

+0

고맙습니다. 이것은 잘 작동합니다. 다른 메소드가 있기 때문에'while'을 사용하고 있습니다.'method'에서 제공 한'start' 응답을 사용하고'while' 루프에서 그 메소드를 호출하는 방법을 말해 줄 수 있습니까? – user6348718

+0

while 'loop도. 고마워. – user6348718

관련 문제