我有一个在循环中打印数字的脚本。
#!/bin/bash
for i in `seq 80 $i`
do
for j in `seq 1 $4`
do
./sujet1 $1 $2 $i
done
done
./sujet1 $1 $2 $i
是一个C编译程序,可以打印一个数字(但我不想在屏幕上打印)。
我想在./sujet1 $1 $2 $i
打印的第二个循环中计算数字媒体,然后在屏幕上打印此媒体。
所以我最后会有$i
媒体。
我知道我应该首先使用./sujet1 $1 $2 $i >> mediane.txt
来保存值。但我不知道如何在文件中恢复它们,计算mediane,在完成每个循环时擦除它们。
编辑:
我按照评论中的说法尝试了 awk ,但我觉得很难理解
#!/bin/bash
for i in `seq 80 $i`
do
for j in `seq 1 $4`
do
awk '{ total += ./sujet1 $1 $2 $i } END { print total/NR }' mediane.txt
done
done
这对我不起作用。
编辑2:例如我输入./run.sh 30 40 90 3 所以我会
//for($3= 80 )
2,3
3,5
4,4
//for($3= 81 )
4,5
1,3
5,6
...
//for($3=90)
2,4
3,5
5,4
你注意到这里每3美元的值我重复4美元的价值。我想计算这4美元价值的中位数并打印一个值
答案 0 :(得分:2)
您的问题很难理解,但我认为您希望多次运行sujet
程序并平均答案。
for i in `seq 80 $i`
do
for j in `seq 1 $4`
do
./sujet1 $1 $2 $i
done
done | awk '{total += $0} END{ print total/NR}'
也许你想要sujet
程序的所有输出的中位数。如果是这样,首先通过sort
输出输出,然后找到awk
的中间输出:
for ...
for ...
./sujet ...
done
done | sort -n | awk '{x[NR]=$0} END{middle=int(NR/2); print x[middle]}'
答案 1 :(得分:0)
你可以反击'反对'操作者:
result="`./sujet1 $1 $2 $i`"
它用于"内联"运行os命令,并将其输出分配给左侧变量