Скрипт init.d останавливает эхо-канал для вывода grep на терминал

Есть ли в любом случае, чтобы заставить замолчать следующую команду в init.d сценарий на Amazon Linux

response=`curl 'http://localhost:9200'`
if (echo "$response" | grep -e "\"status\" : 200"); then
... some logic

Эта команда и условие работают, как и ожидалось, однако при запуске сценария service scriptname start следующее выводится на консоль

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   333  100   333    0     0  54278      0 --:--:-- --:--:-- --:--:-- 55500
  "status" : 200,
Starting scriptname                                            [  OK  ]

В идеале, если возможно, я бы хотел, чтобы на дисплее отображались только:

Starting scriptname                                            [  OK  ]

1 ответ

У Curl есть флаг без вывода сообщений, чтобы он не записывал выходные данные в stdout и stderr. Вы можете использовать любой из:

curl -s
curl --silent

Если вы используете флаг без вывода сообщений, скрипт перестанет работать, так как grep ничего не найдет в операторе if. Используйте следующую команду, которая будет смотреть возвращаемое значение из curl вместо анализа его ответа:

if response=`curl -sS 'http://localhost:9200'`; then
... some logic

Это ничего не напечатает в случае успеха или сообщение об ошибке при ошибке. Переменная ответа будет содержать все данные, прочитанные из запроса.

Вы можете узнать больше о том, что curl может сделать на его man-странице

Другие вопросы по тегам