数値の合計を値で割りたいです。

数値の合計を値で割りたいです。

これは私のUnixシェルスクリプトコードです。

#! /bin/ksh

echo "Enter your first number:"    
read first

echo "Enter your second number:"    
read second

echo "Enter your third number:"    
read third

SUM=`expr $first + $second + $third`    
AVERAGE="$SUM/3"

echo "The average is $AVERAGE"

基本的に、ユーザーが入力した3つの値の平均を求めたいと思います。すべての値を入力した後の結果(たとえば、すべての値の合計が12になる)は、「平均は12/3です」。

ベストアンサー1

ここでslmの答えは、Bourne AgainシェルではなくKornシェルについて質問したことを考慮していませんでした。 (93) Korn シェルには組み込みexprコマンドがないため、exprKorn シェルスクリプトで使用する場合は外部exprコマンドを使用します。これ自体は問題になりません。結局のところ、これはBourneシェルを使って作業を実行する方法であり、Bourneシェルには組み込みexprコマンドはありません。しかし、M. Kohenが指摘したように、人々はシェルに組み込み機能があるときに組み込み機能を使用することを好むかもしれません。 Kornシェルにもあります。

M. Kohen氏が指摘した。算術置換Korn シェルで使用できます。これを覚えておくことが大切ですはい代替であるため、コマンドで実行したくない場合は、代替結果として何かをする必要があります。 M. Kohenの答え(演算子優先順位エラーの修正)のより完全な形式は次のとおりです。

AVERAGE="$(( (first + second + third) / 3))"

しかし、Kornシェルでこれを達成するには2つの異なる方法があります。 Kornシェルには、次letの組み込みコマンドがあります。算術評価それに関するすべての主張は次のとおりです。

let "AVERAGE = (first + second + third) / 3"

コマンドの各引数は式なので、ここのようにスペースを引用する必要があります。

また、kshレプリケーションマニュアルに「syntactic sugar let」と記載されている構文があります。ここで、式はコマンドの単一引数になります。

(( AVERAGE = (first + second + third) / 3 ))

追加読書

おすすめ記事