シェルチェックの使用

シェルチェックの使用

bashスクリプトの学習を開始/学習しようとしていますが、端末で関数に引数を渡す方法(以下を参照)にどのような問題があるのか​​疑問に思います。私の方法はインターネットチュートリアルの多くの方法に似ているようです。

#!/bin/bash

function addition_example(){
    result = $(($1+$2))
    echo Addition of the supplied arguments = $result
}

次のようにスクリプトを呼び出します。

source script_name.sh "20" "20"; addition_example 

これにより、次のものが返されます。

bash: +: syntax error: operand expected (error token is "+")

私も次のことを試しました。

addition_example "$20" "$20"

これにより、次のものが返されます。

bash: result: command not found
Addition of the supplied arguments =

ベストアンサー1

addition_exampleパラメータなしで関数を実行しています。したがって、$1変数$2は空であり、実際に行うことresult = $((+))はまさにあなたが言及したエラーです。

$ result = $((+))
bash: +: syntax error: operand expected (error token is "+")

を実行すると、source script_name.sh 20 20シェルはscript_name.shそれをソースとして指定し、引数20として渡します。20しかしscript_name.sh、実際には何のコマンドも含まれておらず、関数宣言だけがあります。したがって、これらの引数は無視されます。その後、後続のコマンドで引数なしで実行されるため、addition_example上記のエラーが発生します。

また、構文エラーがあります。=シェルスクリプトでは、代入演算子()の周囲にスペースを含めることはできません。スクリプトを次のように変更する必要があります。

function addition_example(){
    result=$(($1+$2))
    echo "Addition of the supplied arguments = $result"
}

次に、必須パラメータを使用して関数を実行します。

$ source script_name.sh; addition_example 20 20
Addition of the supplied arguments = 40

おすすめ記事