У меня есть это выражение:сделать СЕПГ удалить только если существует переменная
// Initially variables set to "" before process
HOSTS_APACHE=""
HOSTS=""
// Some process ...
export HOSTS_CANAL_TMP=$(echo $HOSTS | sed "s/$HOSTS_APACHE//")
Это хорошо работает, когда Apache хостов существует в группе хостов (после обработки). Но это не работает, когда у меня есть группа хостов ($HOSTS
), и у меня нет хоста apache для исключения.
Так что мне нужно подобное выражение, чтобы сделать SED $HOSTS_APACHE
в случае, если есть апачи в $HOSTS
и ничего не делать, если нет.
Теперь ошибка, когда не $HOSTS_APACHE
исключить в $HOSTS
sed: -e expression #1, char 0: no previous regular expression
Используйте инструкцию 'if', чтобы проверить, есть ли что-либо в' $ HOSTS_APACHE'. – Barmar
Это похоже на плохую идею. Что такое типичный контент '$ HOSTS' и' HOSTS_APACHE'? (из-за множественного числа, я боюсь, что хуже). Кроме того, ваша команда эквивалентна расширению параметра: 'export HOSTS_CANAL_TMP =" $ {HOSTS/$ HOSTS_APACHE /} "' (который не страдает от вашей проблемы), если у вас нет регулярного выражения в '$ HOSTS_APACHE '. Не могли бы вы объяснить, чего вы пытаетесь достичь (знаете, ProblemXY), вместо того, чтобы спрашивать о том, как вы думаете, решит ли ваша первоначальная проблема. –