请帮我解决我在Bash中使用shell脚本收到的错误:
line 8: [: 2: unary operator expected
#!/bin/bash
echo "Input your number for factorial calculation: "
read $nr
counter=2
factorial=1
while [ $counter -le $nr ]
do
factorial=$(( $factorial * $counter ))
counter=$(( $counter + 1 ))
done
echo "The result " $nr "! is:"
echo $factorial
while行出了点问题。可能$nr
未正确使用?
答案 0 :(得分:3)
read
获取变量的名称,而不是其值。您需要将read $nr
替换为read nr
。
答案 1 :(得分:1)
您似乎无法格式化问题,因此我无法看到它,但如果您有类似if [ $a -ne $b ]
但$a
或$b
之一,则通常会收到该错误空的,所以基本上解释器会看到像if [ -ne $b ]
这样的东西。他们避免它的方法是
if [ "$a" != "$b" ]