grep отлично работает в командной строке, но ничего не возвращает в скрипте

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

#!/bin/sh cd /var/www_data/patch/ grep --include=\*.{php,ini,conf,sh} -ril -P "'([\d\w\-\_\.]+)(@domain.com)'" "/var/www_data/something/" 2>&1 > mails 

Линия grep отлично работает в командной строке, но если я запустил ее через скрипт, итоговый файл будет иметь размер 0 байт. Есть идеи, почему это происходит?

Нашел свою ошибку. Предполагалось, что это будет #!/bin/bash . Благодаря @steeldriver для наконечника

Чтобы включить расширение оболочки внутри скрипта, вам нужно передать параметр командной строки в bash, это можно сделать в самом скрипте:

 #! /bin/bash set -B #enables expansion set -X #enables debugging 

При первом варианте все будет передано оболочке, как если бы оно было написано в командной строке, второй вариант будет генерировать много результатов, что очень полезно, чтобы увидеть, что происходит, но вы, конечно же, хотите отключить его, как только ваш скрипт работает правильно ,