Регулярное выражение сценария bash для macOS не работает должным образом

Я думаю, вы должны добавить это в .bashrc, что также работает для не -оболочек входа в систему.

0
09.04.2020, 16:41
1 ответ

В вашем коде три ошибки.

  1. Вы используете не те регулярные выражения, которые, по вашему мнению, (отсутствуют $в regex2иregex3).
  2. bashне понимает Perl -как регулярное выражение \Wкак "не символ слова".
  3. Вы не читаете строки (, хотя ваша переменная называетсяline).

Чтобы решить эту проблему:

  1. Используйте $для получения значений regex2и regex3в тестах:

    if [[ $line =~ $regex2 ]]; then...; fi
    
  2. Используйте регулярное выражение POSIX [^[:alnum:]_]вместо \Wв выражениях или [[:blank:]], которое соответствует табуляции или пробелу.

  3. Используйте while IFS= read -r line; do...; done(, см. " Понимание "IFS= чтение -r строки" " ).

0
28.04.2021, 23:18

Теги

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