Почему мое регулярное выражение не работает в bash «if»?

Вот мой код:

if [ -f /Applications/xml[0-9].pl ] 

Я также попытался с -f =~ и двойными скобками, но ни один из них не работает.

Я сначала, хотя регулярное выражение может быть неисправным, но я попробовал это.

 echo h1 | sed 's/h[0-9]/h/' 

И это сработало. Что я здесь делаю неправильно?

2 Solutions collect form web for “Почему мое регулярное выражение не работает в bash «if»?”

Вы не можете проверить файл с регулярным выражением или глобусом, как это. Вы должны перебирать файлы:

 for file in /Applications/xml[0-9].pl; do if [ -f "$file" ]; then ... 

bash расширяет регулярное выражение перед оценкой условия. Если в вашем каталоге три файла по имени

 /Applications/xml0.pl /Applications/xml1.pl /Applications/xml2.pl 

ваш оператор if выглядит как оболочка как

 if [ -f /Applications/xml0.pl /Applications/xml1.pl /Applications/xml2.pl ]] 

который является синтаксически неправильным. Вам нужно будет указать имя файла полностью, если вы хотите найти его существование, используя

 for file in /Applications/xml[0-9].pl do if [ -f ${file} ] 

или если вы можете, используйте команду find для выполнения того, что вы хотите сделать с файлом.

  • Греп от конца файла до начала
  • Множество текстовых файлов в один большой текстовый файл
  • Восстановление пространства из одной файловой системы, чтобы передать его другому без LVM
  • восстановить удаленный файл на ext4 с помощью extundelete
  • Объединить куски из нескольких файлов
  • Как отдельно проверять каждый «блок» большого файла
  • как узнать полный путь команды из результата lsof -i
  • Выполнять команды по выбранным элементам в Midnight Commander
  • найти и найти: использование, плюсы и минусы друг друга
  • Почему я не могу читать / dev / stdout с помощью текстового редактора?
  • Найти файлы tar.gz в папке старше 20 дней и удалить
  • Interesting Posts

    Где будут настроены дополнительные IP-адреса, назначенные сетевому адаптеру для CentOS 4.4?

    Добавить задание CRON из командной строки?

    Как вернуться к оригинальной верхней панели в Debian Mint xfce?

    Показать записи исключения маршрутизации ядра (FIB)

    xset не имеет никакого эффекта в моем файле .xsessionrc

    Разрешить пользователю запускать одну команду с правами root через ssh

    Заполните пустые строки в определенном столбце значениями

    Что произойдет с сеансом сеанса по ssh, когда соединение потеряно?

    XFCE онлайн-помощь по Ctrl-C

    Выберите файл на основе количества строк и обработайте результат

    Заменить данные в определенных положениях в txt-файле, используя данные из другого файла

    Как отображать строки 2-4 после каждого результата grep?

    zsh history: комментируйте опасные команды: `#`

    Найти файлы и рекурсивно добавить текст к ним

    Как вы переходите на вторичный интерфейс на одном физическом порту?

    Linux и Unix - лучшая ОС в мире.