Bash脚本错误: [i: command not found

标签 bash shell

这个程序应该接受用户的一个数字并打印那么多素数。由于某种原因该程序无法运行。我是 bash 脚本新手,这是我的第一个程序。在我看来,一切似乎都是正确的。请告诉我哪里出错了。

echo Enter num
read n
i=2
j=2

for(( i=2; i <= n; i++ ))
do

for(( j=2; j < i-1; j++ ))
do

if [i % j == 0];
then
break
fi


if [i == j];
then
echo "  $i"
fi
done
done

这是我得到的输出

Enter num
20
prime.sh: line 12: [i: command not found
prime.sh: line 18: [i: command not found
prime.sh: line 12: [i: command not found
prime.sh: line 18: [i: command not found
 .
 .
 .

进行建议的更改后

read -p "Enter a  number : " n
i=2
j=2
for(( i=2; i <= n; i++ ))
do
    for(( j=2; j <= i-1; j++ ))
    do
        if [ $(( i % j )) == 0 ]
        then
            break
        fi
        if [ i == j ]
        then
            echo "  $i"
        fi
    done
done

我能够运行该程序,但没有产生任何结果

/image/Fd1se.png

最佳答案

您需要在[后面放置一个空格,因为[是一个应用程序。

并且括号之间不能进行计算。您需要告诉 bash 它需要计算这些值。因此,您需要将第 11 行更改为 if (( i % j == 0 ))

关于Bash脚本错误: [i: command not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397430/

相关文章:

shell - ctrl-z 暂停 tmux 内的 vim 不起作用

html - 在以 HTML 显示时保留 CGI 脚本输出的原始格式

bash - 使用环境变量累积 bash 参数并一起解析它们

Bash 从列名中检索列号

linux - 如何从许多文件中删除包含特殊字符的字符串

linux - 重命名文件的shell脚本

python - 在 linux 上保存 virtualenv 变量

linux - 如何在 bash 运行时使用 $ 创建变量值

在 Jenkins 声明管道中找不到 Bash

regex - Bash:如何使用 sed 删除除字母和数字以外的所有字符?