標籤: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