for i in `checksums.txt` do
Это попытается выполнить checksums.txt
, что, скорее всего, не то, что вы хотите. Если вы хотите содержимое этого файла, выполните:
for i in $(<checksums.txt) ; do
md=$(echo $i|awk -F'|' '{print $1}')
file=$(echo $i|awk -F'|' '{print $2}')
# ...
done
(Это не оптимально, и не будет делать то, что вы хотите, если в файле есть строки с пробелами, но, по крайней мере, это должно помочь вам начать.)