#!/bin/bash 指数

#!/bin/bash 指数

我在 shell 脚本中运行指数运算符时遇到问题

#!/bin/bash
clear

number1=8
number2=2

sum1=$(( number1 ** number2 ))

echo "8 ^ 2 =" $sum1

它返回expecting primary: " number1 ** number2 "

我也尝试过^**但仍然没有打印出所需的结果,8^2 返回 64。我一定是错过了一些东西,我只是不明白什么。

任何提示都会很棒,谢谢。

答案1

您似乎正在dashshell 中运行该脚本。

您引用的错误消息是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

如果您使用其他 shell,您可能需要指向解释器,并以正确的方式运行。

顺便提一句。更喜欢使用printfecho

相关内容