Bash

用於查找最多 4 個數字的使用者定義函式

  • March 24, 2018

我有一個基本腳本,可以使用使用者定義的函式查找最多 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

您可以多次使用 2-argument 函式:

$ 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)
}

如果您不介意使用 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

引用自:https://unix.stackexchange.com/questions/432142