用whil..."/>
溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

shell下的基礎(chǔ)程序題練習(xí)

發(fā)布時(shí)間:2020-07-21 07:27:37 來源:網(wǎng)絡(luò) 閱讀:542 作者:mdd9502053669 欄目:編程語言

1.簡單的進(jìn)度條程序

shell下的基礎(chǔ)程序題練習(xí)

lable數(shù)組 相當(dāng)于進(jìn)度條前進(jìn)時(shí),那個(gè)刷新的圓圈,進(jìn)度條前進(jìn)時(shí)顯示進(jìn)度,用count%顯示

程序運(yùn)行結(jié)果:shell下的基礎(chǔ)程序題練習(xí)

2.1-100之間的求和

   1>用while實(shí)現(xiàn)                        2>用for   in 實(shí)現(xiàn)

   shell下的基礎(chǔ)程序題練習(xí)           shell下的基礎(chǔ)程序題練習(xí)    

  程序運(yùn)行結(jié)果:

  shell下的基礎(chǔ)程序題練習(xí)

3>遞歸實(shí)現(xiàn)

digui

 function add()                          

  {

  local val=$1

  local sum=0

  local add1=0

  local add2=0

 if [ $val -eq 1 ];then

   echo 1

   return

 fi

  add1=$val

  let val--

  add2=$(add $val)

  let sum=$add1+$add2

   echo $sum

}

 function main()

 {

    read n

    add $n

 }

 main

程序運(yùn)行結(jié)果:

 shell下的基礎(chǔ)程序題練習(xí)

4>利用seq 和bc 進(jìn)行求和

  seq   n :生成到這個(gè)數(shù)的所有數(shù)

  |bc:利用|bc可以求和

例如:

shell下的基礎(chǔ)程序題練習(xí)

所以1-100求和可以這樣寫:

shell下的基礎(chǔ)程序題練習(xí)

其中tr表示替換,seq出來的所有數(shù)都有換行符,通過tr將'\n'替換為'+'。后面的sed 是將最后一個(gè)'+'號(hào)替換為'\n',再通過bc進(jìn)行求和。

3.求第n個(gè)斐波那契數(shù)

  1>非遞歸實(shí)現(xiàn)

local 修飾的變量是局部變量

 86 function fib()

 87 { 

 88   local val=$1

 89    while [ $val -eq 0 -o $val -eq 1 ]

 90   do

 91    echo 1

 92    return

 93  done 

 94   i=1

 95   j=1

 96    while [ $val -ge 2 ]

 97    do

 99   let fibn=$i+$j

 100     i=$j

 101     j=$fibn

 102   ((val--))

 103   done

 105 }

 106 function main()

 107 {

 108   read n

 109   fib $n

 110   echo $fibn

 112 }

113 main

2>遞歸實(shí)現(xiàn)

思想:當(dāng)n=1或者n=0時(shí),return 1。因?yàn)榈趎個(gè)斐波那契數(shù)是第n-1個(gè)和第n-2個(gè)數(shù)之和,所以對傳過來的n值先減1在遞歸保存值,再對n減1遞歸保存值,第n個(gè)就是兩個(gè)保存者之和。


115 function fib()

116 {

117  local val=$1

118  local fib1=0

119  local fib2=0

120  fibc=0

121 if [ $val -eq 0 -o $val -eq 1 ];then

122 echo 1

123 return

124 fi

125 let val--

126 fib1=$(fib $val)

127 let val--

128 fib2=$(fib $val)

129 let fibc=$fib1+$fib2

130 echo $fibc

131 

132 }

133 

134 function main()

135 {

136   read n

137   fib $n

138 

139 }

140 main

程序運(yùn)行結(jié)果:

shell下的基礎(chǔ)程序題練習(xí)


4.讀取另外一文件里的數(shù)值,求出最大值、最小值、和、平均值

  1 #!/bin/bash
 2
 3  max=0
 4  min=0
 5  count=0
 6  sum=0
 7  read name
 8  cat $name | while read line
 9  do
10   [ $count -eq 0 ] &&{
11      echo 'count'
12      max=$line
13      min=$line
14
15     }
16  [ $max -lt $line ] &&{
17    max=$line
18  }
19
20  [ $min -gt $line ] &&{
21  min=$line
22 }
23   let count++
24   let sum=sum+line
25  echo "max=$max" "min=$min" "sum=$sum"
26  let avg=${sum}/${count}
27  echo "avg=$avg"
28 done

程序運(yùn)行結(jié)果:

shell下的基礎(chǔ)程序題練習(xí)

shell下的基礎(chǔ)程序題練習(xí)

cat $name 將其重定向到name文件中,然后通過行讀取參數(shù),進(jìn)行判斷和運(yùn)算。





向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI