我正在编写一个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",您的算术被破坏了。
并且为了防止无效的八进制数字(例如,如果用户输入 08
和 09
),强制执行 base-10
echo "$a+$b=$(( 10#$a + 10#$b ))"