シェルスクリプトでfunction()を使用してコマンドを見つけることはできません。

シェルスクリプトでfunction()を使用してコマンドを見つけることはできません。

私はシェルスクリプトを学んでおり、シェルスクリプトで関数を使用する方法を研究しています。スクリプトは、ユーザーが定義した2つの数字を使用してデフォルトの数学計算機として実行する必要があります。加算、減算、乗算、除算が必要です。スクリプトの実行時に結果を生成する関数にアクセスできないようです。次の行で停止します。 "1") result=add $num1 $num2;;コマンドが見つかりません。私のコードで何が欠けているのかわかりません。

#!/bin/bash

#function definition

function add()
{
    echo $(($num1 + $num2))
}
function subtract()
{
    echo $(($num1 - $num2))
}
function multiply()
{
    echo $(($num1 * $num2))
}
function divide()
{
    echo $(($num1 / $num2))
}

#Main Script
echo "Enter two numbers:"
read num1 num2
echo "Enter 1 for additon, 2 subtraction, 3 multiplication, 4  divison:"
read num3
case "$num3" in
    "1")result=add $num1 $num2 ;;
    "2")result=subtract $num1 $num2 ;;
    "3")result=multiply $num1 $num2 ;;
    "4")result=multiply $num1 $num2 ;;
     * ) echo "You didn't enter 1,2,3,4 for your function." ;;
esac
echo "The result is $result: "

ベストアンサー1

result=add $num1 $num2

この行は、シェルの割り当て(result = add)、コマンド($ num1)、および引数($ num2)として解釈されます。それはあなたが望むものではありません。関数の出力を取得するには、コマンド置換が必要です。

result=$(add $num1 $num2)

おすすめ記事