Как проверить, содержит ли вывод команды строку, а затем выполнить команду, если строка существует - PullRequest
0 голосов
/ 07 июня 2018

Пример

if "darwin" in $MACHTYPE; 
  then
    echo "whoa it's a mac!"
fi

И вывод должен быть

О, это же Mac, если Дарвин найден в выводе $ MACHTYPE

Пожалуйста, помогите мне!

Ответы [ 4 ]

0 голосов
/ 07 июня 2018

Приведенный ниже код может получить выходные данные вашей команды в cmd, а затем проверить, есть ли конкретное слово.

command="command here"

if[ `echo $command | grep -c "\"darwin\""` -gt 0 ]; then
    Do anything you want here
fi
0 голосов
/ 07 июня 2018

Если у вас нет версии bash, которая поддерживает регулярные выражения, вы можете использовать globbing :

if [[ $MACHTYPE = *darwin* ]]  
then
    echo "whoa it's a mac!"
fi

Обратите внимание, что вы должны использовать [[, а не[.

Другие оболочки типа sh могут поддерживать [[, но это не гарантируется стандартом.

0 голосов
/ 07 июня 2018

Вы можете оценить вашу команду напрямую, например:

if uname -a | grep -i "darwin" > /dev/null; then
    echo "it is a mac"
fi

В этом случае grep выйдет 0, если найдет значение, а вывод будет перенаправлен на /dev/null, если попытаться, то вы можетевызовите вашу команду, в этом случае: echo "it is a mac"

0 голосов
/ 07 июня 2018

Если вы используете bash, вы можете использовать оператор =~:

if [[ "$MACHTYPE" =~ "darwin" ]]; 
then
  echo "whoa it's a mac!"
fi

со страницы руководства bash:

Дополнительный двоичный файлоператор = ~ доступен с тем же приоритетом, что и == и! =.Когда она используется, строка справа от оператора считается расширенным регулярным выражением и соответствующим образом сопоставляется (как в регулярном выражении (3)).

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