【发布时间】:2019-07-10 06:00:10
【问题描述】:
这就是我想要完成的:
编写一个 Bash shell 脚本 factor.sh,它将执行以下操作: 1) 它提示用户输入一个从 10 到 100 的整数 n; 2)找到该数的最小(质)因数,因此如果该数是 21,它将输出消息“最小因数是 3”。如果数字是 77,它将输出“最小因数是 7”。 3) 如果这个数除了自己没有其他因数,应该输出“This number is prime”。
这是我目前的代码,但我不断收到错误。
echo "Enter a number from 10 to 100: "
read num
if (($num >= 10 && $num <= 100 ));
then
for ((i = 2; i <= $num; i++));do
if (($num % $i == 0));
then
prime = $i
break
fi
done
if (($prime == $num));
then
echo "This number is prime."
else
echo "The smallest prime fatcor is: "
echo $prime
fi
fi
我得到的错误是 prime = $i 的“第 16 行: =: command not found”
并且“第 20 行:((: == 77: 语法错误:操作数预期(错误标记是“== 77”)”,其中 77 将是我输入的数字,并且在线 if (($prime == $num));
我不确定我在这里做错了什么。任何帮助将不胜感激。
【问题讨论】:
-
首先,在 shell 中,空格很重要。将
prime = $i替换为prime=$i。 -
其次,每当您遇到 shell 脚本错误时,最好的第一步是将您的代码剪切并粘贴到 shellcheck.net 并更正它识别的错误(重要)和警告(可能很重要) .如果您无法理解它的信息,请来这里询问。
-
@John1024 太好了,谢谢。这很有帮助,我将来肯定会使用它。非常感谢!
-
@Ash:在
$num之前你不需要循环。如果i大于$num的平方根,则$num必须是素数。