Точно не знаю, что не так с вашим кодом, но возможно, что-то расширяется нежелательным образом из-за переменных без кавычек.
Я сделал следующие улучшения:
#!/bin/bash
FILE1=$1
FILE2=$2
counter=0
while IFS= read -r line; do
printf '%s\n' "$line"
if grep -q "$line" "$FILE2"; then
printf '%d\n' "$((counter++))"
fi
done <"$FILE1"
printf 'counter=%d\n' "$counter"
while read
, а не цикл for
. grep -q
используется для подавления любых выходных данных grep, которые могут быть получены printf '%d\n' "$((counter++))"
используется для сохранения линии printf
, а не echo
, технически более переносим, но в основном это вопрос предпочтений.