Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 找不到命令_Linux_Bash_Shell_Unix_Command - Fatal编程技术网

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