我有这样的代码命令无法找到
#!/bin/bash
read num
sum=0
i=1
while [$i -le $num]; do
let sum=$sum+1
let i=$i+1
done
echo $sum
我收到错误./test:行5:1:命令没有找到,但我不知道这部分是错误的,无法找到。
我有这样的代码命令无法找到
#!/bin/bash
read num
sum=0
i=1
while [$i -le $num]; do
let sum=$sum+1
let i=$i+1
done
echo $sum
我收到错误./test:行5:1:命令没有找到,但我不知道这部分是错误的,无法找到。
您可以使用算术扩展:
#!/bin/bash
# This function does safe read of a number
read_number()
{
read x
# Check for an actual number
case "$x" in ""|*[^0-9]*) echo "Not a number" >&2; exit 1;; esac
# Consider base 10
echo "$((10#$x))"
}
num=$(read_number)
sum=0
i=1
while ((i <= num)); do
((sum++, i++))
done
echo $sum
你还应该检查'num'是一个实际的数字。不要在不消毒的情况下使用用户输入:在这种情况下,您的代码受到任意代码注入的影响。 – 2014-10-30 12:53:03
你是对的;我已经添加了一张支票。 – 2014-10-30 13:11:20
为了避免另一个缺陷:'while((i <= 10#$ num))',以防万一用户输入类似'09'的东西。 – 2014-10-30 13:12:44
空间是很重要的。 '[$ i'必须是'[$ i'和'$ num]'需要'$ num]'。 – 2014-10-30 00:46:47
一切都需要双方的空间? – jmurphy1267 2014-10-30 00:48:22
定义“一切”。命令呢。 “echo”foo“'与”echo“foo”'不是同一个命令。 '''没有什么不同。它恰好是内置的shell,但它也是一个命令(参见'type -p [')。 ']'是关闭的语法标记,并且还需要独立才能看到,是的。 – 2014-10-30 00:51:59