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



我正在编写一个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

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

我建议

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

最新更新