Как я могу сохранить результат этой команды как переменную в моем скрипте bash? - PullRequest
0 голосов
/ 26 июня 2019

Я создаю простой инструмент, который сообщит мне, если сайт "siim.ml" разрешается.Если я запускаю команду «ping siim.ml | grep« Имя или служба не известна »» в командной строке linux, то он возвращает текст, только если сайт не разрешается.Любой работающий сайт ничего не возвращает.

Используя это, я хочу проверить, является ли результат этой команды пустым, и если это так, я хочу выполнить действие.

Проблема не имеет значения, что ясделать переменную пустой!И он по-прежнему просто печатает результат в stdout вместо его сохранения.

Я уже пробовал переключаться между `command` и $ (command) и удалил канал с помощью grep, но это не сработало

#!/bin/bash

result=$(ping siim.ml | grep "Name or service not known")

echo "Result var = " $result

if ["$result" = ""]
then
        #siim.ml resolved
        #/usr/local/bin/textMe/testSite.sh "siim.ml has resolved"
        echo "It would send the text"
fi

Когда я запускаю скрипт, он печатает это:

ping: siim.ml: Name or service not known
Result var =
It would send the text

Ответы [ 2 ]

1 голос
/ 26 июня 2019

Или даже немного более кратко, просто проверьте, успешно ли ping, например,

if ping -q -c 1 siim.ml &>/dev/null
then
    echo "It would send the text"
    ## set result or whatever else you need on success here
fi

. Это не дает никакого вывода из-за перенаправления на /dev/null и успешно, только если успешное ping из siim.ml успешно.

1 голос
/ 26 июня 2019

Это почти наверняка, потому что эта ошибка идет к стандартной ошибке , а не к стандартному выводу (последнее, которое будет зафиксировано $()).

Вы можете объединить стандартную ошибку в выходной поток следующим образом:

result=$(ping siim.ml 2>&1 | grep "Name or service not known")

Кроме того, вам нужны пробелы, отделяющие символы [ и ] от выражения:

if [ "$result" = "" ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...