添加脚本不会返回预期的输出

添加脚本不会返回预期的输出

我想要一个脚本来计算用户输入的数字的总和。

到目前为止我有:

#!/bin/bash
add() {
  sum=0

  for num
  do
          sum=$((sum +num))
  done

}

echo "$sum"

我使用的命令是:

add 4 -3 9 12

返回是: 空行 - 不是单词只是空行 username~/folder:>

我缺少什么?

权限是rwxr xr x 我正在使用路径中的文件夹运行交互式 shell,我不知所措。

答案1

让我们稍微修改一下你的脚本:

$ cat add.sh
#!/bin/bash
add() {
  sum=0
  for num
  do
          sum=$((sum +num))
  done
}

add "$@"
echo "sum=$sum"

现在,让我们运行该脚本:

$ bash add.sh 4 -3 9 12
sum=22

有用。

唯一的变化是我们通过add "$@"before echoing调用了您的函数sum

答案2

只是为了包括实际的简单的方法来做到这一点:

#!/bin/bash
IFS=+
bc <<< "$*"

并使用它(当在您具有执行权限的文件中调用时add.sh):

$ ./add.sh 4 -3 9 12
22
$ 

~/.bashrc或者只是将其定义为您或您正在编写的较大 bash 脚本中的函数:

add() (
  IFS=+
  bc <<< "$*"
)

相关内容