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