我在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
无论哪种方式都很容易并且会做到。