Linux 如何编写shell脚本以查找1到100之间的完美数
问题形象 下面的代码在无限循环中运行,不提供任何输出。 所以我无法理解代码有什么问题 我是shell脚本的初学者 现行代码Linux 如何编写shell脚本以查找1到100之间的完美数,linux,shell,unix,sh,Linux,Shell,Unix,Sh,问题形象 下面的代码在无限循环中运行,不提供任何输出。 所以我无法理解代码有什么问题 我是shell脚本的初学者 现行代码 #!/bin/sh sum=0 i=1 p=1 echo "Perfect numbers from 1 and 100 are" while [ $i -le 100 ] p=1 do while [ $p -le $((i / 2)) ] do if [ $((i % p)) -eq 0 ]
#!/bin/sh
sum=0
i=1
p=1
echo "Perfect numbers from 1 and 100 are"
while [ $i -le 100 ]
p=1
do
while [ $p -le $((i / 2)) ]
do
if [ $((i % p)) -eq 0 ]
then
sum=$($sum + $p)
fi
p=$($p + 1)
done
if [ "$sum" -eq $i ]
then
echo $i
sum=0
fi
done
无限循环来自构造:
while [ $i -le 100 ]
p=1
do
你几乎肯定想写:
while [ "$i" -le 100 ]
do
p=1
while
的语法是:whilecmd;cmd;cmd。。。。;执行
如果最终命令成功,则输入循环体
p=1
将始终成功,因此您有一个无限循环。无限循环来自构造:
while [ $i -le 100 ]
p=1
do
你几乎肯定想写:
while [ "$i" -le 100 ]
do
p=1
while
的语法是:whilecmd;cmd;cmd。。。。;执行
如果最终命令成功,则输入循环体
p=1
总是会成功的,所以你有一个无限循环。首先阅读bash手册,找到的正确语法,而
并通过Hi运行你的脚本。我试图在一个在线编译器上运行它。我已经附上了截图我已经更新了对shellcheck所做的更改仍然没有给出任何错误,但也没有得到任何输出现在你的问题中有两个不同的代码,没有解释它们是什么,除了另一个是“当前”@lieven-le
是非常好的shell脚本;这是什么测试
(又称[
)用于数值比较,主要是因为首先阅读bash手册,找到的正确语法,而并通过Hi运行您的脚本。我试图在一个在线编译器上运行它。我附上了屏幕快照我更新了shellcheck上所做的更改,但它没有给出任何错误,也没有得到任何输出t现在你的问题中有两个不同的代码,没有解释它们是什么,除了另一个是“当前的”@lieven-le
是非常好的shell脚本;它是测试的内容(又称[
)用于数字比较,主要是因为我做了更改。现在我得到的错误是:{main.bash:line 22:syntax error靠近意外标记done'main.bash:line 22:
done'}我做了更改。现在我得到的错误是:{main.bash:line 22:意外标记附近的语法错误done'main.bash:line 22:
done'}