shell数学运算
1. shell 脚本里面从一个文本里面读出一个数字,如何转换成整数我需要用这个数字进行加减乘除
可以参考下面几种方法:
法一:
echo ${var%.*} #这个是直接去除小数点及后面所有内容,只用于bash
法二:
echo $var | awk -F. '{print $1}' #以小数点为分隔符取第一个字段
法三:
echo $var | awk '{print int($0)}' #awk中可直接使用C函数取整
(1)shell数学运算扩展阅读:
shell脚本
shell script是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。
更明白地来说,shell script就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令。
2. Linux中编写一个shell程序,读入一组数字,使用for循环计算该数组数字的乘积。
#!/bin/bash
read-p"请输入一组数字:"-aarray
accumulate=1
fornumin${array[@]}
do
accumulate=$(($accumulate*num))
done
echo"乘积是:"$accumulate
计算读入的一组数字(在同一行输入)的积
3. linux Shell编程中常用的数学计算方法:expr,let,bc及其他。哪个效率更高一点
从效率来说let==$(()) > expr > bc,这个是绝对的。
let和$(())运行是内建命令,使用相同的算法。
expr和bc是外部程序,expr的体积几乎等于bc的1/3,执行一次装入内存所消耗的时间就不一样。
从运算能力来说,自然bc排第一位。
其实还有awk,能更好的执行基本运算、汇总、求平均等更复杂的。而且还可以使用数组、哈希表。
4. linux的shell脚本编程,求两数字间所有偶数的和,我是小白,不太懂。
错的地方太多了
每个运算符和数字/变量之间应该有空格,如“1 > 2”
小于等于不能用“<=”表示,应该用 -le
使用“>”“<”等运算符时,必须用“[[ ]]”符号扩起来以进行转义(while那里就应该改成 while ( [[ $c -le $b ]] )
我把改好后的贴出来给你看看吧(虽然按照你输入的,一直没运算出结果)
#@/bin/bash
a=$1
b=$2
c=$1
d=0
while([[$c-le$b]])
do
if[[$c%2==0]]
then
d=$c+$d
c=$c+1
fi
done
echo$d
5. shell中将字符串转换成数字
1、数字类型转字符类型
数字类型转字符类型,是比较常见的,也是必须容易实现的。大多时候系统能够自动进行转换,如:
aa=$((1+1));echo $aa
变量aa赋值为整数2,但echo 输出时已被当成字符型。当然也可以强制进行转换,如:
echo $aa""
通过与空字符串进行连接,强化将变量aa转化成了字符型。
6. shell程序编写程序计算一个数中各位数字的和
可以这样写
#!/bin/bash
echo -n "your numnber: "
read num
len=$(echo $num | wc -c)
sum=0
for ((i=1;i<$len;i++))
do
sum=$(($sum + $(echo $num | cut -c $i)))
done
echo "sum of '$num' is $sum"
运行结果:
your numnber: 12
sum of ' is 3
在运行一次
your numnber: 1729
sum of ' is 19
7. linux shell简单计算器 怎样在运行文件时直接运算,怎样判断输入的值为数字
#!/bin/sh
if[$#-ne3]
then
echo"Usage:$0value1operatorvalue2"
elifexpr"$1":'[0-9][0-9]*'>/dev/null&&expr"$3":'[0-9][0-9]*'>/dev/null
then
case$2in
[+/-])res=`expr$1$2$3`
echo"Answeris$res"
;;
X)res=`expr$1*$3`
echo"Answeris$res"
;;
*)echo"operatormustbe+,-,/,X"
;;
esac
else
echo"value1andvalue2mustbenumber"
fi
8. 文本处理问题, shell或者vim, 如何对文本里面的数字做运算
用awk操作吧
9. 编写一个shell程序,计算200以内3或5整数倍的数字的和
#!/bin/sh
a=0
for((i=1;i<=$1;i++))
do
if [[ i%5 -ne 0 ]]
then
a=$((a+i))
fi
done
echo $a
测试结果
$ ./test.sh 100
4000
$ ./test.sh 98
3901