Linux Shell脚本语言与数学表达式
来源:互联网 发布:sql select语句 降序 编辑:程序博客网 时间:2024/04/29 00:58
当你理解了Shell脚本,每当需要时都能流畅编写时,那种感觉很爽的。本章中,我们将教你用脚本语言进行比较复杂的数学运算。
让我们从斐波那契数列开始吧。
斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21……,它的每一项都是前两项的和,定义数列的首两项为0、1。
脚本1:Fibonacci.sh
#!/bin/bashecho "How many numbers do you want of Fibonacci series ?" read total x=0 y=1 i=2 echo "Fibonacci Series up to $total terms :: " echo "$x" echo "$y" while [ $i -lt $total ] do i=`expr $i + 1 ` z=`expr $x + $y ` echo "$z" x=$y y=$z done
示例输出
[root@tecmint ~]# chmod 755 Fibonacci.sh[root@tecmint ~]# ./Fibonacci.shHow many numbers do you want of Fibonacci series ? 10 Fibonacci Series up to 10 terms :: 0 1 1 2 3 5 8 13 21 34想必大家都清楚,计算机只能理解二进制格式,即0和1,大多数人都喜欢学习十进制与二进制的转换。不如为这个复杂的计算编写一个简单的脚本吧。
脚本2:DecimalToBinary.sh
#!/bin/bash for ((i=32;i>=0;i--)); do r=$(( 2**$i)) Probablity+=( $r ) done [[ $# -eq 0 ]] &echo -en "Decimal\t\tBinary\n" for input_int in $@; do s=0 test ${#input_int} -gt 11 &printf "%-10s\t" "$input_int" for n in ${Probablity[@]}; do if [[ $input_int -lt ${n} ]]; then [[ $s = 1 ]] && printf "%d" 0 else printf "%d" 1 ; s=1 input_int=$(( $input_int - ${n} )) fi done echo -e done示例输出
[root@tecmint ~]# chmod 755 Decimal2Binary.sh[root@tecmint ~]# ./Decimal2Binary.sh 1121DecimalBinary 1121 10001100001注意:上面的脚本在运行时接受输入,这对我们来说无疑是个好帮手。
下载DecimalToBinary.sh
其实,内置的“bc”命令仅用简单的一行代码就能将十进制数转成二进制。运行如下脚本:
[root@tecmint ~]# echo "obase=2; NUM" | bcNUM是你想要转换的十进制数,比如,
[root@tecmint ~]# echo "obase=2; 121" | bc 1111001接下来是另一个脚本,功能与上述脚本恰恰相反,即将二进制值转成十进制。
脚本3:BinaryToDecimal.sh
#!/bin/bash echo "Enter a number :" read Binary if [ $Binary -eq 0 ] then echo "Enter a valid number " else while [ $Binary -ne 0 ] do Bnumber=$Binary Decimal=0 power=1 while [ $Binary -ne 0 ] do rem=$(expr $Binary % 10 ) Decimal=$((Decimal+(rem*power))) power=$((power*2)) Binary=$(expr $Binary / 10) done echo " $Decimal" done fi示例输出
[root@tecmint ~]# chmod 755 Binary2Decimal.sh[root@tecmint ~]# ./Binary2Decimal.shEnter a number : 11 3注意:上述功能在终端也能用“bc”命令达成,如下,
[root@tecmint ~]# echo "ibase=2; BINARY" | bcBINARY是你想转换的二进制数,例如,
[root@tecmint ~]# echo "ibase=2; 11010101" | bc 213同样,你自己也能编写八进制、十六进制转换成十进制,反之亦然。用“bc”命令完成这些转换的代码如下,
十进制转八进制
[root@tecmint ~]# echo "obase=8; Decimal" | bc十进制转十六进制
[root@tecmint ~]# echo "obase=16; Decimal" | bc八进制转十进制
[root@tecmint ~]# echo "ibase=8; Octal" | bc十六进制转十进制
[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc二进制转八进制
[root@tecmint ~]# echo "ibase=2;obase=8 Binary" | bcShell脚本语言中一些常用的数值描述如下,
Test : INTEGER1 -eq INTEGER2Meaning: INTEGER1 is equal to INTEGER2Test : INTEGER1 -ge INTEGER2Meaning: INTEGER1 is greater than or equal to INTEGER2Test: INTEGER1 -gt INTEGER2Meaning: INTEGER1 is greater than INTEGER2Test:INTEGER1 -le INTEGER2Meaning: INTEGER1 is less than or equal to INTEGER2Test: INTEGER1 -lt INTEGER2Meaning: INTEGER1 is less than INTEGER2Test: INTEGER1 -ne INTEGER2Meaning: INTEGER1 is not equal to INTEGER2原文链接:http://www.tecmint.com/calculating-mathematical-expressions-in-shell-scripting-part-v/
0 0
- Linux Shell脚本语言与数学表达式
- linux shell脚本语言之循环结构与function用法
- Linux脚本语言shell基础学习
- linux脚本语言之shell 中的eval
- 三、Linux——Shell脚本语言
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- Linux Shell的通配符与正则表达式
- linux 正则表达式 与 shell script
- Linux Shell的通配符与正则表达式
- linux shell中逻辑与,或表达式
- shell脚本语言
- 脚本语言-Shell
- Linux Shell 数学运算
- Linux shell 数学运算
- Linux shell数学运算
- Shell expr的用法
- 2014年个人的想法
- Node.js实现双向证书认证(USBKey认证)
- centos 调节屏幕亮度
- 语音识别工具箱之kaldi----研究联盟
- Linux Shell脚本语言与数学表达式
- 2013年收获与困惑
- 局域网抓包c++写的抓包分析工具
- Build gdbserver for x86 Android
- 构建mysql-proxy
- Erlang 的 dict 模块函数方法介绍
- 利用WinpCap 编写抓包程序
- servlet监听器
- 主管喜欢什么样的程序员