Двойные кавычки вводят строку, они не запускают вложенную команду.>
в [ ... ]
сравнивает строки, а не числа, и требует обратной косой черты, иначе это интерпретируется как перенаправление.Кроме того, какой вывод вы ожидаете, когда файлы имеют одинаковый размер (например, когда $ f == $ f1)?
#!/bin/bash
for f in *.txt; do
size_f=$(wc -l < "$f")
for f2 in *.txt; do
size_f2=$(wc -l < "$f2")
if (( size_f > size_f2 )) ; then
echo "$f" bigger than "$f2"
elif (( size_f == size_f2 )) ; then
echo "$f" same size as "$f2"
else
echo "$f" smaller than "$f2"
fi
done
done