使用grep和cut:命令找不到bash脚本

时间:2013-07-02 19:08:16

标签: bash

我是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

我做错了什么?

2 个答案:

答案 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 - 这是它的所有输出 -