shell編程基礎

來源:互聯網
上載者:User

標籤:blog   http   使用   檔案   資料   2014   

(1)它必須以例如以下行開始(必須放在檔案的第一行):
      # !/bin/sh
符號#!用來告訴系統運行該指令碼的程式,本例使用/bin/sh。編輯結束並儲存後,假設要運行該指令碼,必須先使其可運行:
      chmod +x filename
此後在該指令碼所在檔案夾下,輸入 ./filename 就可以運行該指令碼。
(2)變數賦值和引用。Shell編程中,使用變數無需事先聲明,須要給變數賦值時,能夠這麼寫:  變數名=值 。
要取用一個變數的值,僅僅需在變數名前面加一個$ ( 注意: 給變數賦值的時候,不能在"="兩邊留空格 ) 
      # 對字串變數賦值:
      a="hello world"  
      # 列印字串變數a的值:
      echo "A is:" $a
運行結果:A is: hello world

     假設是變數不用輸出到終端,直接在sh檔案內部調用,使用單引號就可以:

       PRODUCT=‘real6410‘

調用到的地方使用:

      mkdir -p out/target/product/$PRODUCT/obj/lib
(3)if 語句。"if"運算式假設條件為真,則運行then後的部分:
       if ....; then
       ....
       elif ....; then
       ....
       else
       ....
       fi
通經常使用" [ ] "來表示條件測試,注意這裡的空格非常重要,要確保方括弧前後的空格。比如:
[ -f "somefile" ] :推斷是否是一個檔案
[ -x "/bin/ls" ] :推斷/bin/ls是否存在並有可運行許可權
[ -n "$var" ] :推斷$var變數是否有值
[ "$a" = "$b" ] :推斷$a和$b是否相等

(4)迴圈。
while ...; do
   ....
done
僅僅要測試運算式條件為真,則while迴圈將一直執行。keyword"break"用來跳出迴圈,而keyword”continue”則能夠跳過一個迴圈的餘下部分,直接跳到下一次迴圈中。

(5)函數功能

       在sh中能夠定義某段類似於函數的整合語句段,在名字前使用function申明。方法如:

function real6410_prebuild()
{
      mkdir -p out/target/product/$PRODUCT/obj/lib
      mkdir -p out/target/product/$PRODUCT/system/lib
     cp vendor/realarm/real6410/*.so out/target/product/$PRODUCT/obj/lib
     cp vendor/realarm/real6410/*.so out/target/product/$PRODUCT/system/lib
}

之後,在其它地方直接使用real6410_prebuild即可了。

(6)sync

同步檔案控制代碼, 重新整理全部未寫入硬碟的資料。

(7)執行個體,可運行指令碼update的內容例如以下。

#!/bin/bashif [ "$1" = "" ]; thenecho "Please input resolution,"echo "Such as: qvga, wqvga, wvga, hvga"exitfip=$1./tool/bmp_to_raw ./temp0.raw ./$p/"${p}_uboot".bmp./tool/bmp_to_raw ./temp1.raw ./$p/"${p}_battery00".bmp./tool/bmp_to_raw ./temp2.raw ./$p/"${p}_battery02".bmp./tool/bmp_to_raw ./temp3.raw ./$p/"${p}_battery04".bmp./tool/bmp_to_raw ./temp4.raw ./$p/"${p}_battery06".bmp./tool/bmp_to_raw ./temp5.raw ./$p/"${p}_battery08".bmp./tool/bmp_to_raw ./temp6.raw ./$p/"${p}_low_battery1".bmp./tool/bmp_to_raw ./temp7.raw ./$p/"${p}_low_battery2".bmp./tool/bmp_to_raw ./temp8.raw ./$p/"${p}_batteryfull".bmp./tool/bmp_to_raw ./temp9.raw ./$p/"${p}_charger_ov".bmp./tool/bmp_to_raw ./boot_logo ./$p/"${p}_kernel".bmp./tool/zpipe -l 9 ./"${p}.raw" temp0.raw temp1.raw temp2.raw temp3.raw temp4.raw temp5.raw temp6.raw temp7.raw temp8.raw temp9.rawrm -rf ./temp0.raw ./temp1.raw ./temp2.raw ./temp3.raw ./temp4.raw ./temp5.raw ./temp6.raw ./temp7.raw ./temp8.raw ./temp9.raw ./bootlogo.rawecho "conversion finished"

      說明:$1表示第一個參數;以上命令依次運行。運行時用./update xxx就能夠運行,可是還有些時候的shell指令碼是用. 或者source來啟動並執行,這些指令碼是須要在當前shell環境下啟動並執行(不會建立子進程),也即包括內建命令的指令碼。


參考原文:http://bbs.chinaunix.net/thread-2231835-1-1.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.