shell脚本剪切命令

问题描述:

我试图削减ABCserviceDEFService DFROM阵列和打印them.What这里我错过?shell脚本剪切命令

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 

紧靠什么呢?

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

或直接

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

在你的代码中存在的问题:

service=echo $url|cut -f4 -d\ 
  • 保存一个命令的输出在一个变量,我们这样做是这样的:service=$(command)
  • 您的cut\作为分隔符而不是/。此外,它是很好用括号把它包起来:-d "/"

你的分隔符应该是一个正斜杠

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

\是转义字符。改为尝试\\

+1

为了避免espacing字符,使用反引号'\,而不是双引号'''“'。 – zessx

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

使用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