Sua variável $pattern
contém espaços - ou talvez um% espúrio^M
/ CR
/ \r
no final, se accts.csv
vier de uma máquina Windows.
Você não pode ver os espaços com echo $pattern
, porque a variável não está entre aspas (como na chamada ao grep), e por isso é bem dividida e aparada pelo mecanismo IFS. Tente algo como echo "{$pattern}"
.
Você deve aparar você mesmo:
$ pattern=$(sed 's/[ \r]//g;q' accts.csv)