シェルスクリプトで指数演算子の実行に問題があります。
#!/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