Скрипт 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-странице