Пробел не обнаружен в строке - PullRequest
0 голосов
/ 01 февраля 2020

Я использую dig, чтобы найти IP субдомена и назначить его переменной с именем string. Этот поддомен имеет 2 IP-адреса, и IP-адреса разделены пробелом. Я хочу сказать, что если в строке есть пробел, объявите об этом. Я использую этот код:

#!/bin/bash
string=$(dig +short google.com)
echo $string
if [[ "$string" =~ \ |\' ]]    #  slightly more readable: if [[ "$string" =~>
then
   echo "Matches"
else
   echo "No matches"
fi

Хотя в «строке» есть пробел, он говорит «нет совпадений». Я также пробовал символ новой строки (\ n), он также не был обнаружен. Что не так?

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

Записи разделены новой строкой. Вы должны привыкнуть заключать в кавычки строки, которые вы echo.

case $string in
  *$'\n'*) echo "Matches";;
  *) echo "No matches";;
esac

Диагностика c сообщения должны, возможно, go к стандартной ошибке (добавить перенаправление на >&2).

Кроме того, # в линии Шебанга является значительным; первые два байта файла должны быть точно #!, чтобы эта конструкция работала.

0 голосов
/ 02 февраля 2020

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

if host example.com >/dev/null
then
   echo "Matches"
else
   echo "No matches"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...