<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Shell編程:Linux系統(tǒng)環(huán)境程序設(shè)計(jì)之路

          Shell編程:Linux系統(tǒng)環(huán)境程序設(shè)計(jì)之路

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          別的高級語言都有函數(shù)的感念,當(dāng)然shell編程也有這個概念,當(dāng)寫一個比較大型的shell程序的時候,如果沒有函數(shù),則會到處都是重復(fù)的代碼。當(dāng)然也可以調(diào)用別的腳本,但是速度會比較慢。所以函數(shù)是必不可少并且非常重要的一個東西。

          本文引用地址:http://www.ex-cimer.com/article/201609/305053.htm

          定義函數(shù)的格式

          function_name(){...}

          例子:

          //~ fun_s

          show(){

          echo show $*

          }

          echo $*

          echo after function

          show c d

          echo $*

          exit 0

          /////////////////////////////

          $./fun_s a b

          結(jié)果是

          a b

          after function

          c d

          a b

          從上面的例子可以看出,當(dāng)腳本調(diào)用函數(shù)的時候,腳本程序的位置參數(shù)會被替換成函數(shù)的位置參數(shù),并且函數(shù)調(diào)用結(jié)束后還原。

          return:

          //~ return_s

          #!/bin/bash

          first(){

          echo is return

          }

          second(){

          echo before return

          return 0

          echo after return

          }

          return_value=$(first)

          echo $return_value

          secondecho return 0  echo return other

          exit 0

          //////////////////////////////////////

          輸出

          is return

          before return

          return 0

          該例子說明可以捕獲函數(shù)內(nèi)echo的字符串,如echo $(first) , 函數(shù)在return后不會再執(zhí)行下面的語句。

          secondecho return 0  echo return other 該句的輸出為 return 0。這里有人可能會和C語言混淆,因?yàn)樵贑語言里0表示的是false。而這里的0表示函數(shù)執(zhí)行成功,可以理解為true,所以會輸出return 0。

          命令

          break,continue 和c語言基本類似

          echo 了解一點(diǎn)即可echo -n 輸出沒有換行。

          eval:

          例子:

          //~ eval_s

          #!/bin/bash

          var1=abcd

          var2=var1

          eval var3=$$var2

          echo $var3

          exit 0

          ///////////////////////////

          eval相當(dāng)于一個額外的$,它給出一個變量值的值,如例子里先是$var2使var3變成$var1,又var1=abcd,所以var3變?yōu)閍bcd,連續(xù)解析了兩次變量。

          export:

          看下面兩個例子可以很好的說明export的作用。

          //~ export1_s

          #!/bin/bash

          var1=this is var1

          var2=this is var2

          export var2

          ./export2_s

          exit 0

          ///////////////////////////

          //~ export2_s

          #!/bin/bash

          echo $var1

          echo $var2

          exit 0

          /////////////////////////

          輸出:

          this is var2

          輸出結(jié)果說明var1為空而var2卻有值,這正是export起的作用,把var2變成了一個環(huán)境變量。

          再看個例子:

          #!/bin/bash

          echo $var1

          echo $var2

          echo $var3

          exit 0

          //////////////////////////

          //~ set-a_s

          #!/bin/bash

          set -a

          var1=var1

          var2=var2

          var3=var3

          ./set-a2_s

          exit 0

          //////////////////////////

          //~ set-a2_s

          輸出:

          var1

          var2

          var3

          set -a的作用就是把它之后聲明的所有變量都export

          printf:

          和C語言里的printf用法很相似的一個命令,使用非常方便。

          set:

          //~ set_s

          #!/bin/bash

          fun1()

          {

          echo a b c d

          }

          set $(fun1)

          echo $1

          echo $(date)

          set $(date)

          echo $1

          exit 0

          ///////////////////////

          輸出: a 2008年 03月 06日 星期四 03:57:55 CST 2008年

          date的輸出是幾個由空格分隔的值,set的作用能分隔出每個域。

          shift:

          就是讓$2變$1,$3變$2,依此類推。

          trap:

          非常有用的一個命令,用于指定接受到信號后進(jìn)行的動作,系統(tǒng)定義了非常多的信號類型,用trap -l命令可以查看所有的信號。

          常見的幾個信號有:

          INT(2) 中斷,按下ctrl+c組合鍵引發(fā)的

          QUIT(3) 退出,按下ctrl+引發(fā)

          例子:

          //~ trap_s

          #!/bin/bash

          trap var=2 INT

          echo please enter ctrl+c

          var=1

          while [ $var = 1 ]

          do

          echo in while

          sleep 1

          done

          exit 0

          /////////////////////////

          這個例子在我按下ctrl+c后改變了var的值,所以跳出循環(huán),程序結(jié)束。

          shell下的程序設(shè)計(jì)非常強(qiáng)大,你可以用它做出很多小工具,讓你的使用linux系統(tǒng)更加流暢。shell還有非常多的功能文中沒有提到,需要大家發(fā)現(xiàn)問題后再自己去解決。



          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();