在一个程序的两个命令中运行两个文件的bash循环

时间:2018-03-11 02:52:01

标签: bash shell loops unix

我正在尝试运行使用两个不同文件的程序:

Program -command1 $file1 -command2 $file2

我已成功将bash循环用于一个文件,但当我将其用作:

for file in *.ext
do
    Program -command1 $file -command2 $file
done

它为两个命令运行相同的一个文件,循环到第二个文件并为该文件执行相同的操作。

我需要程序在一个程序运行下为每个命令单独运行两个文件。

1 个答案:

答案 0 :(得分:0)

虚拟代码,使用printf输出三个目录名称,并使用xargs将这些名称提供给Program,(实际上是echo,以便结果可见) :

printf '%s\n' foo bar baz | 
xargs -I '{}' echo Program -command1 '{}'/Type1.ext -command2 '{}'/Type2.ext

输出:

Program -command1 foo/Type1.ext -command2 foo/Type2.ext
Program -command1 bar/Type1.ext -command2 bar/Type2.ext
Program -command1 baz/Type1.ext -command2 baz/Type2.ext

要实际运行Program,请将" foo bar baz 替换为实际目录的名称,并省略echo

printf '%s\n' ....dir names go here... | 
xargs -I '{}' Program -command1 '{}'/Type1.ext -command2 '{}'/Type2.ext