Это не особо изящно, но должно работать. Просто игнорируйте ошибки и продолжайте попытки, пока все не будет размонтировано:
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
Вы можете сделать что-то вроде этого:
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 ), что равноtest
-с if
.
Используйте оператор 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