Bashスクリプトの算術

Bashスクリプトの算術

Bashスクリプトで入力に基づいて最大値または最小値を決定しようとしています。たとえば、入力がある場合、出力はでなければmax 20 40なりません40。入力がある場合、出力はでなければmin 20 40ならず、20任意の2つの数字についても同様です。

加算、減算、乗算、除算にも同じ操作が必要です。入力がある場合、6 + 6出力はです12。入力がある場合、6 * 6出力はです36

私が経験している問題は、bashに2つの数値を再エコーし、最小値または最大値を表示または加算、減算などを実行するように指示できることです。たとえば、入力が5 10出力の場合、15追加ファイルを実行する場合です。しかし、入力があり、5 + 10出力が15

これで、最大/最小操作を忘れて、ソリューションの算術部分に集中できます。問題をよりよく説明するには、コードを次のように実行する必要があります。

bash filename.sh
6 * 7
42

最初の行はファイルを実行する場所、2行目は入力を入力する場所、最後の行は出力(答え)、その後に新しい行が続きます。を掛けるととても簡単です6 * 7。しかしそうではありません。ファイルを実行しbash filename.shてEnterをクリックすると、加算、減算、乗算、除算に制限される単純な算術演算を入力できる次の行に移動する必要があります。

コードの実行方法の追加例

bash filename.sh
10+ 5
15
bash filename.sh
14 / 7
2
bash filename.sh 
17 - 3
14

スクリプトは、入力されたすべての値に対してこれを実行できる必要があります。ありがとうございます。

ベストアンサー1

この問題は、2つの簡単な質問に分けることができます。

  1. 4つの算術演算はどのようにできますか?
  2. どの数字が小さいか大きいかどうかはどうすればわかりますか?

4つの算術演算

記号を使用してこれを行うことができます$((expr))。より多くの情報を見たいかもしれませんman bash。例:

$ echo $((6 + 6))
12
$ echo $((6 * 6))
36

数量が少ない/多い

2つを比較できます数字[[ expr ]]または形です[ expr ]。私は[[ expr ]]フォーマットを好むので、ここにいます。小さい[[ $num1 -lt $num2 ]]場合は数値を比較します。そして鋼板であることを確認してください。 andはandとして書き込めません。数値順ではなくアルファベット順に比較されます。$num1$num2-gt-lt-gt<>

例:

function max() {
  first=$1
  second=$2
  if [[ $first -lt $second ]]; then
    echo $second
  else
    echo $first
  fi
}

function min() {
  first=$1
  second=$2
  if [[ $first -gt $second ]]; then
    echo $second
  else
    echo $first
  fi
}

使用法:

$ max 20 40
40
$ min 20 40
20

おすすめ記事