Você realmente não precisa fazer um loop: grep -f
pode ler um arquivo para regexes pesquisar. E o loop mais interno está apenas repetindo os greps originais repetidas vezes, mas escrevendo a mesma saída para arquivos diferentes. Por que não,
out=$(mktemp)
grep --no-filename --file="$HOME"/configtool/asrlist -- "$HOME"/configtool/interfaces/* | grep 'up\|down' > "$out"
for n in $(cat "$HOME"/configtool/nodes)
do
cp "$out" "$HOME"/configtool/distill/"$n"
done