Рассчитать максимальный аргумент, переданный скрипту bash - PullRequest
2 голосов
/ 24 декабря 2011

Я пытаюсь вычислить максимальный аргумент, передаваемый скрипту bash. Вот код:

#!/bin/sh

max=$1

for var in "$@"
do
    if ($var>$max)
    then
        max=$var
    fi
done

echo $max

Вот что я получаю:

$ /bin/sh my_script 1 2 3
rgz: 11: 1: not found
rgz: 11: 2: not found
rgz: 11: 3: not found
1

Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 24 декабря 2011

Это может сработать для вас -

#!/bin/bash

max="$1"
for var in "$@"
do
    if [ "$var" -gt "$max" ] # Using the test condition
    then
        max="$var"
    fi
done
echo "$max"
0 голосов
/ 30 октября 2017

Вы можете передать результаты в sort и найти максимум (последний элемент в отсортированном списке) с помощью tail:

your stuff | sort -n | tail -1

Может быть, это не самый эффективный в вычислительном отношении способполучить максимум, но выполняет свою работу.

0 голосов
/ 03 марта 2013

Это мое.Незначительное улучшение ...

#!/bin/bash

max="$1"
for v in "$@"
do
  [[ $v -gt $max ]] && max=$v
done
echo "$max"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...