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


10

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

./script 50
The sum of 50+ 10 is 60. 

这是我到目前为止所拥有的。

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."

我的语法是否错误?我不确定自己是否走对了。我把数字加错了吗?我应该改用awk吗?

let sum = $default + $number 

我想补充,而不是echo荷兰国际集团,然后的使用read直接可以键入:read -p 'Please enter a number: ' yournumber
Tyþë-Ø

Answers:


2

空格导致了错误。

如果希望用户在提示输入“请输入数字:”时输入数字,则可以对脚本进行以下更正:

#!/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."

校验:

./temp.sh
Please enter a number: 50
The sum of 50 and 10 is 60.

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

#!/bin/bash
number="$1"
default=10
sum=`echo "$number + $default" | bc`
echo "The sum of $number and 10 is $sum."

校验:

./temp.sh 50
The sum of 50 and 10 is 60.

3
为什么要为了简单的整数运算而麻烦地运行bc?
下午14年

14

您不应在“ default = 10”和“ sum = $”之间使用空格,并且default&number在从变量中读取之前应带有$。

如下所示,该脚本将按我的预期工作。

#!/bin/bash

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

哦,我明白了!我知道了 这只是一个间距问题。我真的好想这个。感谢您的帮助!
techiegeek 2014年

3
请注意,您没有需要使用$算术表达式中。例如,尝试以下操作:num=5;def=10;echo "sum = $((num + def))"
PM 2Ring

4

这是您要执行的操作的最快方法:

#!/bin/bash
echo "The sum of $1 + 10 is $(($1 + 10))."

输出:

creme@fraiche:~/$ ./script.sh 50
The sum of 50 + 10 is 60.

1
那可能很危险-尝试./script.sh '((PATH=0)+(ANY_OTHER_VARNAME=[ANY INTEGER]))'
mikeserv 2014年

@mikeserv非常准确,但是对于练习我不确定是否值得关注。谢谢您的评论。
cremefraiche
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.