if test $# -lt 1
then
echo "Please input a valid amount of numbers. Need at least one."
exit 1
else
args=0
while args -eq "$#"; do
echo $args
shift
done
fi
echo $sum
echo $n
私が受け取るエラーは次のとおりです。
./whileParamList: 15: ./whileParamList: args: not found
whileループは前のパラメータで増加します。+=
答え1
Bashは数値計算用に設計されていません。これはアジャスター、C、またはPythonの意味では「言語」ではありません。詳細を見る:
私がする方法は次のとおりです。
mysum() (
IFS=+
bc<<<"$*"
)
おそらく:
mysum() (
IFS=+
echo "$(($*))"
)
次に、次のように呼び出します。
$ mysum 5 89 83 7 0 2
186
答え2
私の考えでは、このようなことは大丈夫だと思います。
if [[ $# -lt 1 ]]
then
echo "Please input a valid amount of numbers. Need at least one."
exit 1
else
n=$#
sum=0
for arg in "$@"
do
echo "$arg"
sum=$(($sum+$arg))
done
fi
echo "sum=$sum"
echo "number of parameters=$n"
パラメータの移動方法を好む場合は、次のように動作します。
if [[ $# -lt 1 ]]
then
echo "Please input a valid amount of numbers. Need at least one."
exit 1
else
n=$#
sum=0
while [[ $# -ne 0 ]];
do
echo "arg=$1"
sum=$(($sum+$1))
shift
done
fi
echo "sum=$sum"
echo "number of parameters=$n"