Регулярное выражение с использованием grep в bash дает нежелательный вывод в конце - PullRequest
0 голосов
/ 13 марта 2019

Я перебираю текстовый файл построчно в bash и распечатываю сегменты слова, соответствующие шаблону регулярных выражений.Этот процесс выполняется путем принятия текстового файла в качестве аргумента.Мой код работает нормально, но в конце, в последней строке, выводится нежелательный вывод.Я новичок в Bash, и я понятия не имею, почему это происходит.Ниже показан мой код:

#!/bin/bash
pat='[a-z][a-zA-Z0-9_]*\.png'
while IFS='' read -r line || [[ -n $line ]];do
   echo $line | grep -o -P $pat
done < "$1"

ниже показан вывод (нежелательная строка выделена):

enter image description here

Я хочу избавиться от этой последней строки нежелательного вывода.

1 Ответ

0 голосов
/ 13 марта 2019

Проблема в том, что вы запускаете скрипт с sh вместо bash.[[ - это расширение bash, оно недоступно в sh.Так что измените

sh test2.sh summary.md

на

bash test2.sh summary.md

Или, так как скрипт начинается с #!/bin/bash, просто используйте:

./test.sh summary.md

Вы также должны процитировать всепеременные в скрипте.См. Я только что назначил переменную, но echo $ variable показывает что-то еще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...