【问题标题】:Bash script add numbers as received in argumentsBash 脚本添加参数中收到的数字
【发布时间】:2019-03-10 22:10:02
【问题描述】:

要求是脚本调用时如下:

my_script.sh 1 2 3 4

脚本应该能够添加这些数字并在最后打印总和。

num=0
for arg in "$@"
do
  for number in $arg
  do
    (( num += $number ))
  done
done

我已经编写了上面的脚本,但没有得到想要的输出。

【问题讨论】:

  • 输出是什么,它与期望的输出有何不同? -- 此外,在命令行之一,您可以使用bc 进行快速求和,例如echo 1 2 3 4 | tr ' ' '+' | bc
  • 输出只是“1 2 3 4”。
  • 我尝试使用 bash 和其他各种 shell(zsh、tcsh、mksh)运行script,它适用于所有这些。您可能无法正确调用脚本。

标签: linux bash sum arguments


【解决方案1】:

您的脚本不输出任何内容。尝试添加

echo $num

在最后。

但是您的脚本可以简化。如所写,您的脚本将适用于像

这样的输入
my_script.sh 1 '2 3' 4

同样,它首先循环遍历参数 (for arg in "$@"),然后循环遍历每个参数中的所有单词 (for number in $arg)。你不需要第二个循环。

此外,将结果命名为$sum 似乎可以更好地解释其目的。所以,你可以输入

#!/bin/bash
sum=0
for number in "$@" ; do
    (( sum += number ))
done
echo $sum

【讨论】:

  • 输出只是“1 2 3 4”。它没有打印总和。
  • 它对我有用。你在运行正确的脚本吗?你如何调用它?它使用什么外壳?
  • 成功了。非常感谢。我正在使用在线 bash 编辑器。在我的本地桌面上工作。
猜你喜欢
  • 1970-01-01
  • 2011-09-14
  • 2017-04-02
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
相关资源
最近更新 更多