【发布时间】:2020-04-19 16:39:50
【问题描述】:
我使用具有以下语法的应用程序:
mccli backup delete --name=X --labelnum=X
我可以每次手动执行命令,如下所示:
mccli backup delete --name=server1 --labelnum=12
mccli backup delete --name=server2 --labelnum=33
问题是我有 1000 台主机可以运行此命令。我有一个文件(name.txt),其中包含所有--name= 变量的列表,还有一个文件(labelnum.txt),其中包含所有--labelnum= 变量的列表。
我熟悉以下 bash 命令,它适用于一个变量 (--name=),但我不知道如何使这个 bash 命令适用于两个变量:
for i in $(cat name.txt); do mccli backup delete --name=$i ; done
这不起作用:
for i in $(cat name.txt) for j in $(cat labelnum.txt); do mccli backup delete --name=$i --labelnum=$j ; done
【问题讨论】:
-
文件的内容是什么样的?
-
cat命令 concatenates 输入文件的内容并将它们写入stdout。如果for i in $(cat name.txt)适合您,那么for i in $(cat name1.txt name2.txt)也应该可以。 -
(另请参阅mywiki.wooledge.org/BashFAQ/001,了解在 bash 中一次读取单个文件的更好方法)
-
我现在猜,第一个变量来自 name.txt 文件,第二个变量来自第二个文件 labelnum.txt 吗?我很困惑,您谈论每个文件中的多个列。最好是发布每个文件的一小部分,或者简单地提供更多细节。我无法为所有可能的情况提供解决方案。
-
@MaxMuster...您是正确的,第一个变量来自文件“name.txt”,第二个变量来自“labelnum.txt”。我正在尝试为第一个变量(--name=)获取命令以 cat 'name.txt',为第二个变量(--labelnum=)获取'labelnum.txt'。