你如何添加一个数字作为命令行参数?

tec*_*eek 11 bash

我正在尝试从命令行添加 1 个数字,并像默认值一样添加一个数字。例如:当用户输入数字 50 时,脚本将添加 10(作为默认数字)。

./script 50
The sum of 50+ 10 is 60. 
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止。

echo -n "Please enter a number: " 
read number 
default = 10
sum = $((default + number)) // this line does not seem to work
echo "The sum of $number and 10 is $sum."
Run Code Online (Sandbox Code Playgroud)

我的语法错误吗?我不确定我是否在正确的轨道上。我加错数字了吗?我应该改用 awk 吗?

let sum = $default + $number 
Run Code Online (Sandbox Code Playgroud)

Chr*_*son 15

您不应该在“default = 10”和“sum = $”之间有空格,默认值和数字也应该在它们之前有 $ 以从变量中读取。

然后脚本按我的预期工作,如下所示;

#!/bin/bash

echo -n "Please enter a number: " 
read number 
default=10
sum=$(($default + $number))
echo "The sum of $number and 10 is $sum."
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您**不需要**需要在算术表达式中使用 `$`。例如,试试这个:`num=5;def=10;echo "sum = $((num + def))"` (3认同)

cre*_*che 5

这是执行您所要求的最快方法:

#!/bin/bash
echo "The sum of $1 + 10 is $(($1 + 10))."
Run Code Online (Sandbox Code Playgroud)

输出:

creme@fraiche:~/$ ./script.sh 50
The sum of 50 + 10 is 60.
Run Code Online (Sandbox Code Playgroud)


Man*_*nde 3

空格导致了错误。

如果您希望用户在提示“请输入数字:”时输入数字,您可以使用您的脚本进行一些更正,如下所示:

#!/bin/bash
echo -n "Please enter a number: " 
read number 
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."
Run Code Online (Sandbox Code Playgroud)

查看:

./temp.sh
Please enter a number: 50
The sum of 50 and 10 is 60.
Run Code Online (Sandbox Code Playgroud)

如果您希望用户输入数字作为脚本的参数,您可以使用以下脚本:

#!/bin/bash
number="$1"
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."
Run Code Online (Sandbox Code Playgroud)

查看:

./temp.sh 50
The sum of 50 and 10 is 60.
Run Code Online (Sandbox Code Playgroud)

  • 为什么要运行 bc 只是为了做简单的整数算术? (3认同)