如何使用不同的参数重复执行命令?

如何使用不同的参数重复执行命令?

我在Ubuntu上。我复制了一些参数(用换行符分隔),我可以使用谢尔像这样打印出来

$ xsel
arg1
arg2
arg3
arg4
...

现在,我想将这些参数中的每一个用于另一个命令,并执行该命令与参数一样多的次数。

所以我尝试了

$ xsel | mycommand "constantArgument" $1

但是,这mycommand仅针对第一个参数执行。我如何为每个参数执行它?

答案1

你可以简单地使用xargs

xsel | xargs -n1 echo mycommand 

-n1意味着 mycommand 的一个参数,但这只是空运行,它会显示将要运行的内容,要运行它,请删除echo

对于常数参数

xsel | xargs -I {} -n1 echo mycommand "constantArgument" {}

答案2

xsel | while read line; do mycommand "$line"; done

或者类似的东西。您还可以使用xargs,这是一个非常强大的命令,用于操作命令行参数。

答案3

为了一点可定制性:

printf "${CMD} %s ${ARG2}\n" `xsel` | sh -n

您可以删除-noexecute在您了解其工作原理后标记。

如果它适合你,你可以放弃sh完全并执行此操作:

. <<HERE /dev/stdin
    $(printf "${CMD} %s ${ARG2}\n" `xsel`)
HERE

或者更快:

printf "${CMD} %s ${ARG2}\n" `xsel` | . /dev/stdin

无论哪种方式都很容易并且会做到。

相关内容