2

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

我究竟做错了什么?

4

2 回答 2

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)"
于 2013-07-02T19:10:26.583 回答
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 - 这是它的所有输出 -

于 2013-07-02T19:11:32.597 回答