REGEX Для проверки строки из вариабельного значения

Это не особо изящно, но должно работать. Просто игнорируйте ошибки и продолжайте попытки, пока все не будет размонтировано:

while mount | grep -q /tree; do 
    mount | awk '/tree/{print $3}' | xargs sudo umount 2>/dev/null
done

Вышесказанное предполагает, что вы разумный человек, который не использует пробелы или другие странные символы в своих точках монтирования. Если это не так, используйте это вместо этого (предполагается, что у вас нет точек монтирования с именами, включающими как в , так и тип ):

while mount | grep -q /tree; do 
 mount | sed -nE 's/.*\s+on\s+(.*baba.*)\s+type.*/\1/p' | 
    xargs sudo umount 2>/dev/null
done
0
25.10.2018, 23:02
2 ответа

Вы можете сделать что-то вроде этого:

var1="temp-pprod-deployment"
if `echo "$var1" | grep -q "prod"` ;then
   echo "\$var1 contains word 'prod'"
else 
   echo "Not found."
fi

Объяснение :Вы получаете вывод переменной и передаете его в grep для регулярного выражения. Опция -qозначает возврат 0 в случае успеха (true )и 1 в случае неудачи (false ), что равноtestif.

0
28.01.2020, 04:11

Используйте оператор bash/, чтобы удалить тестовую строку из содержимого переменной и посмотреть, изменила ли ее эта операция. Если это так, вы знаете, что строка присутствует:

$ var1="temp-pprod-deployment"
$ var2="temp-pdev-deployment"
$ [ "${var1/prod}" == "$var1" ] && echo not found
$ [ "${var2/prod}" == "$var2" ] && echo not found
not found
$ [ "${var1/dev}" == "$var1" ] && echo not found
not found
$ [ "${var2/dev}" == "$var2" ] && echo not found

В полном соответствии с ФП:

if [ "${var1/prod}" != "${var1}" ]
then
  echo "Found."
else
  echo "Not found."
fi
0
28.01.2020, 04:11

Теги

Похожие вопросы