2013-07-02 7 views
2

Я новичок в bash и вам нужен простой скрипт. Он запускает банку и должен найти «RESPONSE CODE: XXX». Мне нужен этот код ответа (всего лишь XXX). Я стараюсь это:bash script with grep and cut: команда не найдена

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

Что я делаю неправильно?

ответ

1

В этой строке:

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

Обратные кавычки в строке 3 (определение callResult) также должны быть прямыми кавычками. Если бы он не хотел, чтобы это звучало так, и он загораживал. – theglauber

+0

@theglauber Хорошая точка. Я стараюсь избегать обратных ссылок и просто придерживаюсь привычного стиля '' $ (...) "', так как это приводит к созданию более чистого кода. – DevNull

+0

спасибо, это помогло. но, как я обнаружил, что это дает мне некоторый вывод Xtra, а не только 200, но 200 rii

0
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 для стандартного ввода - который все его выходные данные -