脚本说输入时找不到两个命令

时间:2015-03-11 21:21:39

标签: bash command-line terminal command-line-interface

我正在编写一个bash脚本作为作业的第一部分。如果参数的数量是2,那么它应该返回总和;如果它不是两个,它应该返回错误消息并退出脚本。

但即使我输入两个命令,它仍然会给我错误信息。这是为什么?我写了一些非常相似的东西 - 减去数字 - 一秒钟前它运行良好。

#!/bin/bash 
# This script reads two integers a, b and 
# calculates the sum of them 
# script name: add.sh 

read -p "Enter two values:" a b

if [ $# -ne 2 ]; then 
  echo "Pass me two arguments!"
else 
  echo "$a+$b=$(($a+$b))"
fi

2 个答案:

答案 0 :(得分:2)

read从标准输入读取,而使用$1检查其计数的参数($2$#,...)是可以使用的命令行参数在被调用时传递给你的程序。

答案 1 :(得分:1)

我建议

read -p "Enter two values: " a b additional_garbage
if [[ -z $b ]]; then # only have to test $b to ensure we have 2 values

“additional_garbage”是为了防止输入超过2个值的搞笑用户,然后$ b就像“2 3 4”并且你的算术被打破了。

要防止无效的八进制数(例如,如果用户输入0809),请强制执行base-10

echo "$a+$b=$(( 10#$a + 10#$b ))"