cat list.txt | grep '^http://.*\.osm\..*$' | while read line; do
fn=$(basename $line)
do_something()
done
# TODO: check if it did something
grep コマンドが何も返さない場合、ループには入らず、do_something()は実行されません。
while ループの外で $fn の内容を確認できません。 Bash variable scopeを参照してください。
ここでdo_something()が実行されたかどうかを確認するための最も侵襲性の低いソリューションは何ですか?