我是bash的新手,需要一些简单的脚本。它运行jar,并且必须找到“响应代码:XXX”。我需要这个响应代码(只是XXX)。我试过这个:
URL=$1
echo $URL
callResult=`java -jar RESTCaller.jar $URL`
status=$?
if [ $status -eq 0 ]; then
result=`$callResult >> grep 'RESPONSE CODE' | cut -d':' -f 2`
else
echo error
fi
我得到./run.sh: line 7: RESPONSE: command not found
我做错了什么?
答案 0 :(得分:2)
在这一行:
result=`$callResult >> grep 'RESPONSE CODE' | cut -d':' -f 2`
您应该将输出管道输出到grep,而不是重定向。将其更改为:
result=`$callResult | grep 'RESPONSE CODE' | cut -d':' -f 2`
此外,语法有点偏差,你最好尽可能避免反引号。这甚至更好:
result="$(echo ${callResult} | grep 'RESPONSE CODE' | cut -d':' -f 2)"
答案 1 :(得分:1)
URL=$1
echo $URL
callResult=`java -jar RESTCaller.jar $URL`
status=$?
if [ $status -eq 0 ]; then
result=$($callResult 2>&1 grep 'RESPONSE CODE' | cut -d':' -f 2)
else
echo error
fi
您将结果传递给某些无效的文件名 >>意味着写入文件添加..
2>& 1表示将stderr重定向到stdin - 这是它的所有输出 -