최대 4개의 숫자를 찾는 사용자 정의 함수

최대 4개의 숫자를 찾는 사용자 정의 함수

사용자 정의 함수를 사용하여 2개 숫자의 최대값을 찾는 기본 스크립트가 있는데 4개 숫자를 허용하도록 변환해야 하는데 막혔습니다. 여기에 스크립트가 있습니다.

#!/bin/bash
echo $1 $2 | awk '
{
    print max($1, $2)
}

function max(a, b) {
    return a > b ? a: b
}'

간단히 다음을 수행하여 실행할 수 있습니다. ( ./scriptname 1 2또는 원하는 두 숫자) 출력은 두 숫자 중 최대값이 됩니다. 나는 다음을 할 수 있다고 생각합니다.

#!/bin/bash
echo $1 $2 $3 $4 | awk '
{
    print max($1, $2, $3, $4)
}

function max(a, b, c, d) {
    return a < b ? a: b
}' 

"반환" 와이어인 와이어 7에 문제가 있습니다. 어떤 제안이 있으십니까?
감사합니다 -CableGuy

답변1

AWK 대신 Bash를 사용해도 괜찮다면:

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

답변2

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

이 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}'

답변4

이것디지털 유틸리티일반적인 문제를 해결하기 위한 콘텐츠가 포함되어 있습니다 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

관련 정보