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