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

Script saying two commands not found when they've been entered

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

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

#!/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 从标准输入读取,而您正在使用 $# 检查其计数的参数(</code>、<code>、...)是命令行参数可以在调用时传递给您的程序。

我建议

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