2013-05-30 2 views
-1

ABCserviceDEFService을 배열에서 잘라내어 인쇄하려고합니다. 여기에 무엇을 놓치고 있습니까? 쉘 스크립트 커팅 명령

urlArray=('http://server:port/ABCservice/services/ABCservice?wsdl' 'http://server:port/DEFservice/services/DEFservice?wsdl') 
     for url in "${urlArray[@]}" 
     do 
      service=echo $url|cut -f4 -d/ 
      echo $service 
     done 

예상 출력 :

ABCService 
DEFService 

전류 출력이 접

./test1.sh: line 6: http://server:port/ABCservice/services/ABCservice?wsdl: No such file or directory 
./test1.sh: line 6: http://server:port/DEFservice/services/DEFservice?wsdl: No such file or directory 

답변

3

무엇을? 코드에서

service=$(echo $url | cut -d"/" -f4) 
echo $service 

직접

echo $(echo $url | cut -d"/" -f4) 

문제점 :

service=echo $url|cut -f4 -d\ 
  • 변수에 명령 출력을 저장하기 위해, 우리는 다음과 같이 그것을 : service=$(command).
  • cut/ 대신 구분 기호로 \입니다. 또한 괄호로 포장하는 것이 좋다 : -d "/"
0

귀하의 구분 슬래시

echo 'http://server:port/ABCservice/services/ABCservice?wsdl' | cut -f 4 -d/ 
0

\ 이스케이프 문자 인에게해야한다. 대신 \\을 시도하십시오.

+1

는 문자를 espacing 사용 역 인용 부호를 방지하기 위해'\''대신 큰 따옴표의' "'. – zessx

1
service=$(echo $url | cut -d/ -f6 | cut -d\? -f1) 
echo $service 
1

bash 문자열 함수를 사용하여 :

for i in "${!urlArray[@]}"; do 
    urlArray[i]="${urlArray[i]%\?*}" 
    urlArray[i]="${urlArray[i]##*/}" 
    echo ${urlArray[i]} 
done 



$ urlArray=('http://server:port/ABCservice/services/ABCservice?wsdl' 'http://server:port/DEFservice/services/DEFservice?wsdl') 
$ for i in "${!urlArray[@]}"; do urlArray[i]="${urlArray[i]%\?*}"; urlArray[i]="${urlArray[i]##*/}"; echo ${urlArray[i]} ; done 
ABCservice 
DEFservice