整数计算脚本

  • 本文关键字:脚本 计算 整数 sh
  • 更新时间 :
  • 英文 :


昨天,我在另一个线程中发布了一个关于我正在进行的项目的问题。我对UNIX编程非常陌生,而且我的脚本有很多问题。让我先说明一下剧本的目的。

目的:每次计算都使用一个单独的函数,脚本将计算并打印每个整数是否为偶数或奇数、素数(或非素数)以及在命令行上输入的参数的整数因子。应为每个数字命令行参数调用此函数。如果输入了一个非整数,脚本将产生一条错误消息,并转到下一个数字。我必须使用伯恩外壳。

问题-在取得一些好的进展后,我在两个方面遇到了困难:1:如果我输入1作为参数之一,输出会重复两次"1不是素数"2:我尝试过使用dev/null命令,但如果输入了非整数参数,则无法找到正确的代码来触发错误如有任何帮助,我们将不胜感激。

这是我的代码:

#!/bin/sh
prime () {
if [ $Num -eq 1 ]
    then
    echo "$Num is not a prime number"
fi
Pcheck=`factor $Num|wc -w`
if [ $Pcheck -eq 2 ]
then
echo "$Num is a prime number"
else
echo "$Num is not a prime number"
fi
}
even_odd () {
rem=$(( $Num % 2))
if [ $rem -eq 0 ]
then
    echo "$Num is an even number"
else
    echo "$Num is an odd number"
fi
}
while [ $# -gt 0 ]
do
Num=$1
prime Num
even_odd Num
shift
done

如果输入非数值,则设法完成脚本并保存错误消息。

#!/bin/sh
factors () {
i=1
while [ $i -le $Num ]
do
if [ `expr "$Num" % $i` -eq 0 ]
then
    echo -n "$i "
fi
i=`expr $i + 1`
done | sort -nu
}
prime () {
Pcheck=`factor $Num|wc -w`
if [ $Pcheck -eq 2 ]
then
echo "$Num is a prime number"
else
echo "$Num is not a prime number"
fi
}
even_odd () {
rem=$(( $Num % 2))
if [ $rem -eq 0 ]
then
    echo "$Num is an even number"
else
    echo "$Num is an odd number"
fi
}
while [ $# -gt 0 ]
do
Num=$1
if [ "$Num" -eq "$Num" ] 2>/dev/null
then
echo “$Num is not a valid number “
fi
prime Num
even_odd Num
factors Num
shift
done

相关内容

  • 没有找到相关文章

最新更新