成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux Shell腳本語言與數(shù)學(xué)表達(dá)式

譯文
系統(tǒng) Linux
當(dāng)你理解了Shell腳本,每當(dāng)需要時都能流暢編寫時,那種感覺很爽的。本章中,我們將教你用腳本語言進(jìn)行比較復(fù)雜的數(shù)學(xué)運算。

【51CTO譯文】當(dāng)你理解了Shell腳本,每當(dāng)需要時都能流暢編寫時,那種感覺很爽的。本章中,我們將教你用腳本語言進(jìn)行比較復(fù)雜的數(shù)學(xué)運算。

讓我們從斐波那契數(shù)列開始吧。

斐波那契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個數(shù)列:0、1、1、2、3、5、8、13、21……,它的每一項都是前兩項的和,定義數(shù)列的首兩項為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@tecmint ~]# chmod 755 Fibonacci.sh
[root@tecmint ~]# ./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

下載Fibonacci.sh

#p#

想必大家都清楚,計算機(jī)只能理解二進(jìn)制格式,即0和1,大多數(shù)人都喜歡學(xué)習(xí)十進(jìn)制與二進(jìn)制的轉(zhuǎn)換。不如為這個復(fù)雜的計算編寫一個簡單的腳本吧。

腳本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 1121

Decimal		Binary 
1121      	10001100001

注意:上面的腳本在運行時接受輸入,這對我們來說無疑是個好幫手。

下載DecimalToBinary.sh

其實,內(nèi)置的“bc”命令僅用簡單的一行代碼就能將十進(jìn)制數(shù)轉(zhuǎn)成二進(jìn)制。運行如下腳本:

[root@tecmint ~]# echo "obase=2; NUM" | bc

NUM是你想要轉(zhuǎn)換的十進(jìn)制數(shù),比如,

[root@tecmint ~]# echo "obase=2; 121" | bc 

1111001

#p#

接下來是另一個腳本,功能與上述腳本恰恰相反,即將二進(jìn)制值轉(zhuǎn)成十進(jìn)制。

腳本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.sh

Enter a number : 
11 
3

注意:上述功能在終端也能用“bc”命令達(dá)成,如下,

[root@tecmint ~]# echo "ibase=2; BINARY" | bc

BINARY是你想轉(zhuǎn)換的二進(jìn)制數(shù),例如,

[root@tecmint ~]# echo "ibase=2; 11010101" | bc 

213

下載BinaryToDecimal.sh

#p#

同樣,你自己也能編寫八進(jìn)制、十六進(jìn)制轉(zhuǎn)換成十進(jìn)制,反之亦然。用“bc”命令完成這些轉(zhuǎn)換的代碼如下,

十進(jìn)制轉(zhuǎn)八進(jìn)制

[root@tecmint ~]# echo "obase=8; Decimal" | bc

十進(jìn)制轉(zhuǎn)十六進(jìn)制

[root@tecmint ~]# echo "obase=16; Decimal" | bc

八進(jìn)制轉(zhuǎn)十進(jìn)制

[root@tecmint ~]# echo "ibase=8; Octal" | bc

十六進(jìn)制轉(zhuǎn)十進(jìn)制

[root@tecmint ~]# echo "ibase=16; Hexadecimal" | bc

二進(jìn)制轉(zhuǎn)八進(jìn)制

[root@tecmint ~]# echo "ibase=2;obase=8 Binary" | bc

#p#

Shell腳本語言中一些常用的數(shù)值描述如下,

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

原文鏈接:http://www.tecmint.com/calculating-mathematical-expressions-in-shell-scripting-part-v/

 

責(zé)任編輯:奔跑的冰淇淋 來源: 51CTO.com
相關(guān)推薦

2022-01-04 11:35:03

Linux Shel正則表達(dá)式Linux

2013-06-03 09:45:53

R語言

2009-06-10 08:41:15

Linux腳本語言

2012-07-16 11:23:18

LinuxWindows腳本語言

2009-12-17 10:39:01

Ruby數(shù)學(xué)表達(dá)式

2013-01-05 02:19:50

JavaLambda表達(dá)式JVM

2024-03-25 13:46:12

C#Lambda編程

2009-09-16 09:58:53

PHP正則表達(dá)式函數(shù)

2017-05-12 10:47:45

Linux正則表達(dá)式程序基礎(chǔ)

2017-12-27 15:25:50

LinuxBash正則表達(dá)式

2022-09-09 00:25:48

Python工具安全

2022-09-08 11:35:45

Python表達(dá)式函數(shù)

2014-01-05 17:41:09

PostgreSQL表達(dá)式

2023-07-31 07:43:07

Java語言表達(dá)式變量

2020-11-16 11:10:00

ShellLinux正則表達(dá)式

2010-03-09 11:15:28

Python語言教程

2022-05-07 12:21:14

工具分布式

2011-08-22 18:00:53

Lua語言

2010-03-03 11:03:51

Linux正則表達(dá)式

2010-03-03 13:31:25

Linux正則表達(dá)式
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产精品久久久久aaaa九色 | 一呦二呦三呦国产精品 | 中文字幕加勒比 | 欧美久久久久久 | 欧日韩在线 | 人成在线视频 | 福利网址 | 呦呦在线视频 | 久久久久国产一区二区三区四区 | 午夜精品一区二区三区在线视频 | 国产成人叼嘿视频在线观看 | 亚洲精品视频一区二区三区 | 日本高清aⅴ毛片免费 | 亚洲成人播放器 | 亚洲精色 | 日日操夜夜操天天操 | 一级黄色片在线看 | 羞羞网站在线免费观看 | 男女久久久 | 毛片a级 | 欧美精品一级 | 成人一区二区三区 | 欧美视频在线看 | 天天夜碰日日摸日日澡 | 四虎最新地址 | 日本精品一区二区三区视频 | japanhd美女动| 在线伊人 | 午夜一区二区三区 | 日本福利一区 | 一区二区成人 | 日韩免费一区二区 | 天天爽综合网 | 99久热在线精品视频观看 | 亚洲国产成人精品久久久国产成人一区 | www.成人.com | 成人在线视频网 | 中文字幕在线免费观看 | 久久成人精品一区二区三区 | 97久久精品午夜一区二区 | 毛片网在线观看 |