我正在尝试编写一个for
循环,查看文本文件中的主机列表,然后运行一系列来自另一个文件的命令,该文件以主机的IP和文件{{1 }}
例如,在extension.txt
文件中,我将定义以下主机:
hosts.txt
等。
在另一个目录中,我将使用一组不同的命令命名如下:我希望在每个主机上运行这些命令:
192.168.1.1
192.168.3.1
192.168.2.197
因此,如果192.168.1.1.txt 192.168.3.1.txt 192.168.2.197.txt
中存在主机192.168.1.1
,它会在hosts.txt
中针对该主机运行命令。如果它不在192.168.1.1.txt
循环中,那么最简单的工具是什么?
答案 0 :(得分:4)
while read file; do
bash ./files/$file.txt
# or source ./files/$file.txt, as necessary
done < hosts.txt
答案 1 :(得分:0)
while read file; do
bash /path/${file}.txt
done < hosts.txt
我想这应该为你做到
在对此答案的第2号评论中学习后,更改了答案。 这主要是下面提供的相同答案。
答案 2 :(得分:0)
使用xargs
可能最简单:
xargs -I % bash "./scripts/%.txt" < hosts.txt
-I %
确保为每个输入行(hosts.txt
中的行)调用指定的命令,并用行代替%
字符(作为单个参数)。./scripts
是托管要调用的脚本的目录。