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


11

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

$ xsel
arg1
arg2
arg3
arg4
...

现在,我想将这些参数中的每一个用于另一个命令,并在有参数的情况下执行该命令。

所以我尝试了

$ xsel | mycommand "constantArgument" $1

但是,此操作mycommand仅对第一个参数执行。如何为每个参数执行它?


编辑了问题,以反映mycommand有多个参数的事实。
2014年

Answers:


12

您可以简单地使用 xargs

xsel | xargs -n1 echo mycommand 

-n1 代表mycommand的一个arg,但这只是空运行,它将显示要运行的内容,将其删除 echo

对于恒定参数

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

如果“ mycommand”期望多个参数,而xsel仅包含一个参数,该怎么办?
2014年

xsel | xargs -n1 echo mycommand -more-arg
Rahul Patil'3

xsel | xargs -n2 echo mycommand每个命令两个arg
Rahul Patil 2014年

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

或类似的东西。您还可以使用xargs,这是用于处理命令行参数的功能非常强大的命令。


1

对于一些可定制性:

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

两种方法都很容易,而且会做到。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.