Linux 找不到命令
我有这个密码Linux 找不到命令,linux,bash,shell,unix,command,Linux,Bash,Shell,Unix,Command,我有这个密码 #!/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 () { re
#!/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
!/bin/bash
#此函数用于安全读取数字
读取编号()
{
读x
#检查实际数字
“|*[^0-9]*)中的大小写“$x”回显“不是数字”>&2;退出1;;esac
考虑基础10
回声“$((10#$x))”
}
num=$(读取编号)
总和=0
i=1
而((i空格很重要。[$i
需要[$i
和$num]
需要$num]
两边都需要空格吗?定义“一切”。命令需要。echo“foo”
显然与echo“foo”不同。[
也没什么不同。它恰好是一个内置的shell,但它也是一个命令(请参见type-p[
)。
是结束语法标记,也需要自己才能看到,是的。[
是一个命令,它要求]
是它的最后一个(空格分隔)论据您还应该检查num
是否为实际数字。在未对其进行清理的情况下,不要使用用户输入:在这种情况下,您的代码会受到任意代码注入的影响。为了避免另一个陷阱:while((i