嵌套 For 循环中的无限循环

嵌套 For 循环中的无限循环

我正在编写以下脚本来为我解析一些文件。该脚本实际上做了我想要的事情 - 我在正确的文件中获得了正确的信息。看来最外面的 for 循环运行了正确的次数。下面的嵌套循环运行的次数超出了必要的次数,并且最里面的循环无限运行。

#!/bin/bash
for f in $HOME/configtool/interfaces/*
do
     for d in $(cat $HOME/configtool/asrlist);
     do
          for n in $(cat $HOME/configtool/nodes);
          do
               grep $d $f | grep 'up\|down' >> $HOME/configtool/distill/$n
          done
     done
done

由于可扩展性,如果可能的话,我想避免使用幻数来终止循环

有人有什么想法吗?

答案1

您实际上根本不需要循环:grep -f可以读取文件以供正则表达式搜索。最里面的循环只是一遍又一遍地重复原始的 grep,但将相同的输出写入不同的文件。为什么不,

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

相关内容