我在命令后输出了这个:
$some_command
id
274725
275050
275065
277560
277801
277814
277817
277862
277863
我需要忽略第一行并将所有数字设置为变量:
var1=274725
var2=275050
...
...
var9=277863
然后我想用这些变量作为参数运行命令:
$ some_cmd $ var1 $ var2 ... $ varN
凭借我非常有限的知识,我知道如何计算出变量的数量:
varN1=`some_command | wc -l`
varsN=`expr $varN1 - 1`
但这不是最简单的解决方案,我不知道如何设置循环,我将设置变量以及如何构造命令。也许是这样的事情?:
for i in (1...$varsN)
do
var$i=.... ?
答案 0 :(得分:1)
看起来你将它们放入变量只是为了将它们传递给另一个函数/程序。这实际上并不是必需的。
xargs
,在输入参数组上运行多个子任务的程序,可以选择限制它传递给每个任务的参数数量:
pax> echo 'id
274725
275050
275065
277560
277801
277814
277817
277862
277863' | awk 'NR>1{print}' | xargs -n 4 echo runcommand
runcommand 274725 275050 275065 277560
runcommand 277801 277814 277817 277862
runcommand 277863
awk
命令只删除第一行,然后xargs -n 4
将为每个分组运行子任务echo runcommand
。
答案 1 :(得分:0)
要运行一个命令,将文件中的所有数字作为单独的参数运行,您可以使用
yourcommand $(some_command | sed 1d)
请注意,这假设您的行都是数字,而不是包含空格和其他要保留的ascii字符的字符串。