Пользовательская функция для нахождения не более 4 чисел

Это возможно в Linux, если ядро ​​/ ОС имеет поддержка контейнеров Linux (LXC). (И я думаю, что это то, что использует Android ...)

Например, вы создаете новую оболочку с ее собственным пространством имен монтирования следующим образом:

  $ lxc-unshare -s MOUNT /bin/bash

Ссылки:


Это может быть своего рода ошибки, кстати.

Нет. Это не ошибка.

1
19.03.2018, 22:16
4 ответа

Если вы не против использовать Bash вместо AWK:

find_max() {
  local max number

  max="$1"

  for number in "${@:2}"; do
    if ((number > max)); then
      max="$number"
    fi
  done

  printf '%d\n' "$max"
}

Использование:

$ find_max 12 64 2 455 23 99
455
4
27.01.2020, 23:14

Вы можете использовать функцию с 2 -аргументами-несколько раз:

$ cat scriptname 
#!/bin/bash
echo $1 $2 $3 $4 | awk '

function min(a, b) {
    return a < b ? a: b
}

{
    print min(min(min($1,$2),$3),$4)
}'

тогда например

$./scriptname 3 1.2 -0.4 77
-0.4

Если вам необходимо записать ее как функцию с 4 -аргументами, я бы предложил что-то вроде

function min(a, b) {
    return a < b ? a : b
}

function min4(a,b,c,d) {
    return min(min(min(a,b),c),d)
}

{
    print min4($1,$2,$3,$4)
}
3
27.01.2020, 23:14

Вы можете попробовать этот awk:

echo -3.89 -1.2 -0.217 -48 | awk '{a=$1;for(i=2;i<=NF;i++)a=$i>a?$i:a;print a}'
0
27.01.2020, 23:14

Пакетnum -utils включает numbound, который решает общую проблему, (не ограничивается 4 аргументами):

printf "%s\n" 5 88.3 22 -22 -333 5 | numbound 

Выход:

88.3

Это можно превратить в простую функцию, анализирующую аргументы командной строки.:

max() { printf "%s\n" "$@" | numbound ; }

Пример:

max 55 33 2 99 22

Выход:

99
0
27.01.2020, 23:14

Теги

Похожие вопросы