#!/bin/bash インデックス

#!/bin/bash インデックス

シェルスクリプトで指数演算子の実行に問題があります。

#!/bin/bash
clear

number1=8
number2=2

sum1=$(( number1 ** number2 ))

echo "8 ^ 2 =" $sum1

それは戻ってくるexpecting primary: " number1 ** number2 "

私も試してみましたが、^まだ**希望の結果を印刷できませんでした。 8^2 は 64 を返しました。何か抜けたこと間違いなしです。何を理解していません。

どんなアドバイスでもいいでしょう。ありがとうございます。

答え1

dashシェルでスクリプトを実行しているようです。

引用したエラーメッセージは、演算子がdash理解できない場合に出力されるものです(何もありません)。これは何かを乗算しようとしたときに発生するのと同じエラーです。**dash

$ echo $(( 2 * ))
dash: 14: arithmetic expression: expecting primary: " 2 * "

スクリプトを直接実行するか(#!最終的に正しい行がある)、次のように明示的に呼び出すことを確認してくださいbash

$ bash script.sh

答え2

GNU bash、バージョン 4.1.2(1)-リリース(x86_64-redhat-linux-gnu)

これは素晴らしい作品です。完全なスクリプトは次のとおりです。

#!/usr/bin/env  bash
clear

number1=8
number2=2

printf 'The sum of %d and %d = %d\n' $number1 $number2 $(( number1 ** number2))

ただ使うだけですchmod +x filename; ./filename

別のシェルを使用している場合は、インタプリタを指して正しい方法で実行する必要があります。

ところで。printfよりも使用することを好むecho

関連情報