Используя GNU bash (версия 4.0.35 (1) -релиз (x86_64-suse-linux-gnu), я хотел бы отменить тест с регулярными выражениями. Например, я хотел бы условно добавить путь к переменной PATH, если путь еще не существует, как в:
TEMP=/mnt/silo/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi
export PATH
Я уверен, что есть миллион способов сделать это, но я хотел бы знать, можно ли как-то отрицать условное условие, как в (ошибочном):
TEMP=/mnt/silo/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/Scripts:
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
TEMP=/mnt/silo/local/bin
if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; fi
export PATH
regex
bash
conditional
negate
Дэвид Роджерс
источник
источник
Вы также можете поставить восклицательный знак внутри скобок:
но вы должны закрепить свой шаблон, чтобы уменьшить количество ложных срабатываний:
который ищет совпадение в начале или конце с двоеточием до или после него (или обоих). Я рекомендую использовать строчные или смешанные имена переменных как привычку, чтобы уменьшить вероятность конфликтов имен с переменными оболочки.
источник
$
поэтому нет смысла их вводить в верхнем регистре, чтобы они выделялись.if [[ ! $foo =~ bar ]]
более безопасным, чемif ! [[ $foo =~ bar ]]
, потому что это облегчает введение большего количества условий дляif
самый безопасный способ это поставить! для отрицания регулярного выражения в
[[ ]]
следующем виде:в противном случае это может произойти сбой в некоторых системах.
источник
Да, вы можете отменить тест, как уже указывал SiegeX .
Однако вы не должны использовать регулярные выражения для этого - он может потерпеть неудачу, если ваш путь содержит специальные символы. Попробуйте это вместо:
(Источник)
источник
Мне нравится упрощать код без использования условных операторов в таких случаях:
источник