shell脚本剪切命令
问题描述:
我试图削减ABCservice
和DEFService
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/
答
的\
是转义字符。改为尝试\\
。
答
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
为了避免espacing字符,使用反引号'\,而不是双引号'''“'。 – zessx