![获取文件中的最高值并根据所需计数存储下一个值](https://linux22.com/image/1119966/%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%9C%80%E9%AB%98%E5%80%BC%E5%B9%B6%E6%A0%B9%E6%8D%AE%E6%89%80%E9%9C%80%E8%AE%A1%E6%95%B0%E5%AD%98%E5%82%A8%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%80%BC.png)
假设我有计数器,它是变量。为了清楚起见counter = 3
,
我有具有不同值的文件:
文件 1
3
4
8
文件 2
2
3
4
5
文件 3
11
13
15
文件 4
19
29
34
我想要的输出是一个max= 34
需要打印的变量。
此外count=3
,在这种情况下我应该能够将下一个值存储在变量中
variable A= 35
variable B =36
variable C =37
并打印出来。
我尝试了不同的代码if -> then
等,但没有任何效果。
有人可以指点我吗?
这是我上次尝试的代码
f1mx = `cat file1 | grep "." | tail -1`
f2mx = `cat file2 | grep "." | tail -1`
f3mx = `cat file3 | grep "." | tail -1`
f4mx = `cat file4 | grep "." | tail -1`
if [ $f1mx \> $f2mx ];
then
f12mx=$f1mx
else
f12mx=$f2mx;
fi;
if [ $f3mx \> $f4mx ];
then
f34mx=$f3mx
else
f34mx=$f4mx;
fi;
if [ $f12mx \> $f34mx ];
then
fmax=$f12mx
else
fmax=$f34mx
fi;
echo "fmax"
i=0
while [ $i -le $counter ];
do
a[$i]=$fmax+1
echo $a[$i];
let i=i+1
done
答案1
假设目录中所有具有名称的文件file*
都具有这些值,您可以像这样获取最大值:
$ cat f* | sort -n | tail -1
34
或者存储它:
$ max=$(cat f* | sort -n | tail -1)
$ echo $max
34
要根据该值定义变量,请执行以下操作:
for i in $(seq $count)
do
declare v$i=$((max + $i))
done
对于您来说,这将生成v1
最多到v$count
($v3
),每个都像v_i = $max + $i
。