Вопрос:

Нахождение наибольшего значения переменной

bash awk

564 просмотра

4 ответа

29 Репутация автора

Поэтому я пытаюсь найти наибольшее значение переменной. Например, у меня есть это:

var1=14
var2=15
var3=16

Я хочу найти наибольшее значение, которое является вар 3, и сохранить его где-нибудь. Есть способ сделать это?

Что-то вроде этого:

tmp=`sort -n $var1 $var2 $var3  ` (this is an example)
Автор: Adam Источник Размещён: 27.03.2017 02:20

Ответы (4)


3 плюса

3398 Репутация автора

Вам нужно будет получить эти числа в массив, оттуда это просто:

a=(14 15 16) # Example array

IFS=$'\n'
echo "${a[*]}" | sort -nr | head -n1
Автор: mayersdesign Размещён: 27.03.2017 02:26

1 плюс

52294 Репутация автора

max=$(echo $var{1,2,3} | tr ' ' '\n' | sort -nr | head -1)
Автор: karakfa Размещён: 27.03.2017 02:48

1 плюс

2150 Репутация автора

Проверьте ниже решение, если вы хотите найти максимальное значение переменной -

$ cat f
var4=18
var1=14
var2=15
var3=16
$ max=$(sort -t'=' -nrk2 f|head -1)
$ echo $max
var4=18
Автор: VIPIN KUMAR Размещён: 27.03.2017 03:00

2 плюса

45637 Репутация автора

Решение

Это найдет максимум по именам переменных

#!/bin/bash

maxvarname() {
    for i; do
        echo "${!i} $i"
    done | sort -nr | sed -n '1s/.* \(.*\)/\1/p'
}

#MAIN

#the variables
var1=14
var2=15
var3=16

vname=$(maxvarname var1 var2 var3) #note, arguments are the NAMES (not values e.g. $var1) - without $
echo "Max value is in the variable named: '$vname' and its value is: ${!vname}"

это печатает:

Max value is in the variable named: 'var3' and its value is: 16
Автор: jm666 Размещён: 27.03.2017 03:04
Вопросы из категории :
32x32