2つの数字の最小/最大値を提供できるUnixコマンドはありますか?

2つの数字の最小/最大値を提供できるUnixコマンドはありますか?

で読む量を制限するコマンドを探していますstdin

私はこの目的のために小さなスクリプトを書いていますが(批判を歓迎します)、これは単純で一般的なユースケースを達成するための標準コマンドがないかどうか疑問に思います。

私のスクリプトを見つけました。最低限度で2つの数字:

#!/bin/bash
# $1 limit

[ -z "$1" ] && { echo "Needs a limit as first argument." >&2; exit 1; }

read number

if [ "$number" -gt "$1" ]; then
        echo "$1"
else
        echo "$number"
fi

ベストアンサー1

a2つの整数の合計を扱っていることがわかっている場合は、b次のように簡単です。三項演算子を使用したシェル算術拡張数値の最大値を提供するだけで十分です。

$(( a > b ? a : b ))

数値最小値は次のとおりです。

$(( a < b ? a : b ))

例えば

$ a=10
$ b=20
$ max=$(( a > b ? a : b ))
$ min=$(( a < b ? a : b ))
$ echo $max
20
$ echo $min
10
$ a=30
$ max=$(( a > b ? a : b ))
$ min=$(( a < b ? a : b ))
$ echo $max
30
$ echo $min
20
$ 

これを示すシェルスクリプトは次のとおりです。

#!/usr/bin/env bash
[ -z "$1" ] && { echo "Needs a limit as first argument." >&2; exit 1; }
read number
echo Min: $(( $number  < $1 ? $number : $1 ))
echo Max: $(( $number  > $1 ? $number : $1 ))

おすすめ記事