我写了这段代码:
echo -n "Enter a number1 "
echo -n "Enter a number2 "
read R1
read R2
while [ "$R1" < "$R2"]
do
if [ $((R1 % 2)) -eq 0 ]; then
$R3=$R1
echo "Number is $R3"
else
echo "Nothing"
fi
done
我不明白为什么它总是给我这个错误bash:8]:没有这样的文件或目录
答案 0 :(得分:1)
您应该使用-lt
代替<
。
while [ "$R1" -lt "$R2" ]
<
被解释为bash中的输入重定向。
或者您可以使用双方括号将内部解释为算术运算:
while [[ "$R1" < "$R2" ]]
答案 1 :(得分:1)
自< "$R2"
被列为从 "$R2"
读取后,会发生什么。由于你没有这样一个名字的文件,它会抱怨。
[
(测试命令)命令没有<
运算符。您必须改为使用-lt
:
while [ "$R1" -lt "$R2" ]
有一个POSIX扩展,用斜杠支持它:
while [ "$R1" \< "$R2" ]
如果你使用bash进行bash,那么你也可以使用支持[[ ..]]
,<
等的内置>
。
while [[ "$R1" < "$R2" ]]
另见:
What is the difference between test, [ and [[ ?
重新编写代码后将循环放入 if
:
#!/bin/bash
echo -n "Enter a number1 "
read R1
echo -n "Enter a number2 "
read R2
if [[ "$R1" < "$R2" ]]
then
for((i=R1;i<R2;i++));
do
if [[ $((i % 2)) -eq 0 ]]; then
echo "Number is $i"
fi
done
else
echo "Nothing"
fi