Это возможно в Linux, если ядро / ОС имеет поддержка контейнеров Linux (LXC). (И я думаю, что это то, что использует Android ...)
Например, вы создаете новую оболочку с ее собственным пространством имен монтирования следующим образом:
$ lxc-unshare -s MOUNT /bin/bash
Ссылки:
Это может быть своего рода ошибки, кстати.
Нет. Это не ошибка.
Если вы не против использовать 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
Вы можете использовать функцию с 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)
}
Вы можете попробовать этот 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}'
Пакет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