Linux 对文本文件中的每个id运行命令

Linux 对文本文件中的每个id运行命令,linux,bash,shell,awk,xargs,Linux,Bash,Shell,Awk,Xargs,我有一个文本文件,上面有一个id列表,如下所示,我需要在每个id上运行下面的命令,在awk中有更简单的方法吗 ssh -p 29418 company.com gerrit review --code-review 2 -- file.txt file.txt包含以下内容: 297003 297002 297001 ... 只要file.text中存在id,就应运行以下命令 ssh -p 29418 company.com gerrit review --code-review 2 -- 2

我有一个文本文件,上面有一个id列表,如下所示,我需要在每个id上运行下面的命令,在awk中有更简单的方法吗

ssh -p 29418 company.com gerrit review --code-review 2 -- file.txt
file.txt包含以下内容:

297003
297002
297001
...
只要file.text中存在id,就应运行以下命令

ssh -p 29418 company.com gerrit review --code-review 2 -- 297003
ssh -p 29418 company.com gerrit review --code-review 2 -- 297002
ssh -p 29418 company.com gerrit review --code-review 2 -- 297001
.....
读取sshid时
做
ssh-p$sshid。。。
完成
Awk不是我在这里想要的工具。我建议
xargs

xargs -I% -n1 < file ssh -p 29418 company.com gerrit review --code-review 2 -- %
提示是在实际运行输出之前,使用
echo
命令查看输出:

# -------------- notice we run echo not ssh to see the output before we rut it 
xargs -n1 < file echo ssh -p 29418 company.com gerrit review --code-review 2 -- 
ssh -p 29418 company.com gerrit review --code-review 2 -- 297003
ssh -p 29418 company.com gerrit review --code-review 2 -- 297002
ssh -p 29418 company.com gerrit review --code-review 2 -- 297001

我将使用while循环对每个值执行操作,并将
$I
的值设置为包含值列表的文件的
读取的输出

while read i
do
     ssh -p 29418 company.com gerrit review --code-review 2 -- $i
done < filename

如何在他们身上运行?是将每个id添加到命令行的末尾,还是替换命令行中的一个数字?为什么要使用Awk?Shell脚本似乎是自然选择。@sudo_O-更新了问题..端口号始终不变..文件中每个id的“-”选项都会更改。txt@user2125827这很有道理,哈哈。我已经更新了我的答案,
%
只需替换为
文件中的每个数字
,因此
%
只需移动到命令的末尾;做完成了在读取i时使用
比在$(cat filename)
中使用
有什么好处?我已经意识到了自己的坏习惯。谢谢你的提示。
xargs < file echo ssh -p 29418 company.com gerrit review --code-review 2 -- 
ssh -p 29418 company.com gerrit review --code-review 2 -- 297003 297002 297001
while read i
do
     ssh -p 29418 company.com gerrit review --code-review 2 -- $i
done < filename
while read i
do
     echo "ssh -p 29418 company.com gerrit review --code-review 2 -- $i" 
done < filename