所以这是我的代码
#! /bin/bash
echo -n "Please enter the first integer: "
read $num1
echo -n "Please enter the second integer: "
read $num2
if [[ "$num1" -eq "$num2" ]];
then
echo "$num1 is -eq $num2"
fi
该程序的问题是它不打印$num1
并且$num2
语句后的值为 true
顺便问一下,有什么方法可以更好地处理整数输入和比较吗?
答案1
正如@Bodo所说,你的read
陈述是错误的。
如果你有一个命令read $num1
,那么 shell 会查找 num1 的值(假设它是“fred”),然后运行read fred
以获取一行输入并将其存储在变量 fred 中。
如果(可能是这种情况)num1 没有当前值,则 shell 将运行read
,并将该值存储在变量 中REPLY
。
一般来说你应该总是引用你的变量。如果您这样做并说过read "$num1"
,那么当 shell 将其转换为read ""
空字符串不是变量的有效名称时,您将收到一条错误消息。