Не равная Тильда в bash

как представлено в названии, Что за напротив of "=~" оператор? Я действительно гуглил для этого, и я финансирую только следующее решение:[[ ! $str1 =~ $str2 ]] Есть ли оператор, который проверяет напротив of "=~" оператор?

спасибо.

2 ответов


нет противоположного оператора в bash до версии 4.3 (текущий на момент этого поста).

[[ ! str1 =~ str2 ]] - Это путь.

для таких вопросов, вы должны использовать man вместо вашей любимой поисковой системы. Man-страница соответствующего инструмента-bash, в данном случае-авторитетна, " web-это слухи (если, конечно, это не привело вас к man-странице; -)).


ответ тут нет такого оператора в bash что значит !~ как его там в Perl, если вы не хотите использовать уже известный ( [[ ! $str1 =~ $str2 ]] ) для этой цели вам придется использовать grep или perl . Что-то вроде:

x="I like negation"
y="like"


if [[ $(perl -ne "!/$y/ && print" <(echo $x)) == "$x" ]]; then 
echo "Contains"
else
echo "Doesn't contain"

но я не нахожу никаких причин, чтобы пропустить !~ в bash как [[ ! $str1 =~ $str2 ]] решает цель довольно хорошо. Может быть, причина в том, что его нет в bash.

рассмотрим первый комментарий к этому ответу от DevSolar он держится, когда вы пойдете с grep или perl, что опять делает [[ ! $str1 =~ $str2 ]] лучшее из доступных.