Как проверить, соответствует ли имя какого-либо файла некоторому шаблону (например, в нем есть "SSS") в предложении if ? Мой вариант, похоже, не работает (это всегда ложь).

for f in B/* ; do
    if [ $f = .*SSS.* ] ; then
#    if [ -f $f ] -and -regex ".*SSS.*"; then
        echo $f
    fi
done

1 ответ1

1

Вам нужны двойные скобки, а не '.'(Shell globbing no sed regex)

for f in B/* ; do
    if [[ $f = *SSS* ]] ; then
        echo $f
    fi
done

Небольшой гугл дает вам https://stackoverflow.com/questions/2348379/use-regular-expression-in-if-condition-in-bash

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .