你的人会感觉舒服,了解shell脚本和书写流利他们根据自己的需要。 这是本系列教程,我们将开展使用脚本语言有点复杂的数学运算的最后一个职位。 Shell脚本系列的最后四篇文章这是按时间顺序。
学习Shell脚本部分 - V
- 了解基本的Linux Shell脚本语言提示 - 第一部分
- 5 Shell脚本Linux新手学习Shell编程 - 第二部分
- 航行通过Linux的世界BASH脚本 - 第三部分
- Linux Shell编程的数学方面 - 第四部分
让我们从Fibonacci系列开始
数字模式,其中每个数字是两个前面数字的总和。 该系列是0,1,1,2,3,5,8 ......根据定义,在Fibonccai序列的前两个数字是0和1。
脚本1:Fibonacci.sh
#!/bin/bash echo "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@youcl ~]# chmod 755 Fibonacci.sh [root@youcl ~]# ./Fibonacci.sh How 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:Decimal2Binary.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@youcl ~]# chmod 755 Decimal2Binary.sh [root@youcl ~]# ./Decimal2Binary.sh 1121 Decimal Binary 1121 10001100001
注 :上面的脚本在运行时接受,这显然是一种辅助输入。
那么内置的“BC”命令可以在十进制转换为二进制在单行的脚本。 运行,在你的终端。
[root@youcl ~]# echo "obase=2; NUM" | bc
与您希望从十进制转换为二进制数,替换“NUM”。 例如,
[root@youcl ~]# echo "obase=2; 121" | bc 1111001
接下来,我们会写哪些功能对面上面的脚本, 转换二进制数值为十进制的脚本。
脚本3:Binary2Decimal.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@youcl ~]# chmod 755 Binary2Decimal.sh [root@youcl ~]# ./Binary2Decimal.sh Enter a number : 11 3
注 :以上功能可在终端使用“BC”命令来执行。
[root@youcl ~]# echo "ibase=2; BINARY" | bc
与二进制数,即替换'BINARY'。,
[root@youcl ~]# echo "ibase=2; 11010101" | bc 213
同样你可以写从八进制 , 十六进制转换为十进制 ,反之亦然自己。 完成使用“BC”命令是上述结果的终端。
十进制到八进制
[root@youcl ~]# echo "obase=8; Decimal" | bc
十进制到十六进制
[root@youcl ~]# echo "obase=16; Decimal" | bc
八进制到十进制
[root@youcl ~]# echo "ibase=8; Octal" | bc
十六进制到十进制
[root@youcl ~]# echo "ibase=16; Hexadecimal" | bc
二进制到八进制
[root@youcl ~]# echo "ibase=2;obase=8 Binary" | bc
在一些shell脚本语言的使用,说明是通用数字测试。
Test : INTEGER1 -eq INTEGER2 Meaning: INTEGER1 is equal to INTEGER2
Test : INTEGER1 -ge INTEGER2 Meaning: INTEGER1 is greater than or equal to INTEGER2
Test: INTEGER1 -gt INTEGER2 Meaning: INTEGER1 is greater than INTEGER2
Test:INTEGER1 -le INTEGER2 Meaning: INTEGER1 is less than or equal to INTEGER2
Test: INTEGER1 -lt INTEGER2 Meaning: INTEGER1 is less than INTEGER2
Test: INTEGER1 -ne INTEGER2 Meaning: INTEGER1 is not equal to INTEGER2
这是这篇文章和文章系列的全部。 这是Shell脚本系列的最后一篇文章,它不意味着对脚本语言中没有的文章将再次来到这里,它只是意味着shell脚本教程已经过去,每当我们觉得值得一个有趣的话题知道或查询从你的人,我们将很乐意从这里继续系列。
保持健康,调节并连接到youcl。 很快我会有另一个有趣的话题,你会喜欢阅读的人。 分享评论部分您宝贵的想法。