Не равная Тильда в 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 ]] лучшее из доступных.