Bash
用於查找最多 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
您可以多次使用 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