shell 使用:
1.shell簡介:
簡單的說shell就是一種命令解析器,是一種程式設計互動介面,通過驅動作業系統核心完成指定的工作,它是使用者與作業系統之間的橋梁。
分類:linux主流的shell有三種bash tcsh korn shell
這裡我學習的是bash 它是標準的uxin shell 是由 at&t開發出來的 以快捷、簡介著名
2.shell基本使用:
vim hello.sh 開啟vi 輸入
#!/bin/sh //#!表示指定該指令碼的解析程式
echo "hello" //答應hello
儲存 執行./hello 你發現 執行不了 為什麼呢??因為這是的 檔案不可執行 該怎麼辦呢 使用 chmod 777 hello 是其具有可執行屬性
下面具體介紹一下
開頭指定所需的 解析器 #!/bin/sh
注釋 使用#開頭的一行表示注釋語句
變數 在shell中所有的變數都是字串組成 並且無需對其預先宣告 當輸出時需要在變數後加入字元 比如2nd 在變數2後加上nd字元則需要在列印中把變數用{}闊起來
這樣才能正確的列印出所需的字元
預設變數:$#:傳入指令碼命令列引數的個數
$*:所有命令列引數,在個引數前用空格隔開
$0、$1、$2: 對應命令本身 第乙個命令列引數 第二個命令列引數
區域性變數:子啊首次複製時加上local關鍵字
(注意 變數賦值(注意只在這個時候)時 「=」左右兩邊不能有空格 bash語句結尾不加;分號)
如果不加local 關鍵字看看:
echo:列印
read:輸入
例:#! /bin/sh
echo "input name and age"
read name age
echo "name is :"$name
echo "age is:"$age
執行看看 注意 在等待輸入時 要輸入name變數值 和age變數值中間用空格隔開
shell 陣列:
賦值方法:陣列名[下標值]=值(對單個值賦值) 陣列名=(value1 value2 value3...)一次性對陣列賦值
取值方法:$
#!/bin/sh
name=
echo "name[0] is : " $
echo "name[1] is : " $
echo "name[2] is : " $
看看結果
3:shell控制語句:
(1) if 語句
原型:if 條件 if 條件
if 條件
then 語句1 then 語句1
then 語句1
fi else 語句2 elif 條件2
fi then 語句2
else 語句3
fi所有測試條件
字串測試:
-z s1 s1的長度為0為真
-n s1 s1長度大於0為真
s1 s1不為空則返回真
s1 = s2 (注意此處的空格) 在s1=s2時為真
同理s1 > s2 s1 < s2
對於數字運算子:
n1 -eq n2 測試n1 = n2
n1 -ne n2 n1!=n2
n1 -lt n2 n1
n1 -le n2 n1<=n2
n1 -gt n2 n1>n2
n1 -ge n2 n1>=n2
邏輯運算子
! 邏輯非
-a 邏輯與
-o 邏輯或
()把邏輯做一整體
檔案運算子:
-r/-w/-x 判斷檔案存在且是否可讀、可寫、可操作
-f 判斷檔案是否是普通檔案
-d 判斷檔案是目錄檔案
-b 塊裝置檔案
-c 字元裝置檔案
-s 檔案長度大於零
#!/bin/bash
#將第乙個命令列引數傳遞給變數a,第二個命令列引數傳遞給變數b
a=$1
b=$2
#判斷a或者b變數是否為空,只要有乙個為空就列印提示語句並退出
if [ -z $a ] || [ -z $b ]
then
echo "please enter 2 no"
exit 1
#判斷a和b的大小,並根據判斷結果列印語句
fiif [ $a -eq $b ] ; then
echo "number a = number b"
else if [ $a -gt $b ]
then
echo "number a>number b"
elif [ $a -lt $b ]
then
echo "number a(2)case語句:
case 字串 in
模式串表示式1 ) 語句1;;
模式串表示式2 ) 語句2;;
........
esac 例:
#! /bin/sh
echo please enter your name:
read name
case $name in
tom ) echo your name is tom;;
xiaoming ) echo your name is xiaoming;;
* ) echo "we don't kown your name";;
esac
4.shell迴圈語句:
(1) for語句
原型1: 原型2: 原型3:
for 變數 in 取值集合 for 變數 in 檔案正規表示式 for 變數 in $*
do do do
語句 語句 語句
done done done
(2)while語句
while 條件測試語句 do
語句done
#!/bin/bash
#提示使用者輸入
echo -n "pleasw enter number : "
read n #讀入輸入的值放到變數n中
sd=0
rev=""
on=$n #將變數n的值儲存到變數on中,方便以後用到
echo "you put number is $n"
while [ $n -gt 0 ]
dosd=$(( $n % 10 )) #求餘
n=$(( $n / 10 )) #去掉當前的最後一位數後剩下的數
rev="$rev$sd" #將當前的最後一位數放到字串之後
done
echo "$on in a reverse order $rev"
嵌入式linux如何學習
俗話說萬事開頭難 然後中間難,最後難?剛開始的時候,你是否根本就不知如何開始,上網查資料被一堆堆新名詞搞的找不到北,去圖書館看書也是找不到方向?又是arm,又是linux,又是uboot頭都大了。不知道自己究竟從 開始?嵌入式linux如何學習 簡單說,從arm基礎知識到裸機程式設計,從ucosii...
嵌入式Linux學習筆記
嵌入式linux學習筆記 學習 一 linux的優勢 1 廣泛的硬體支援 linux能夠支援x86 arm mips alpha powerpc等多種體系結構,目前已經成功移植到數十種硬體平台,幾乎能夠執行在所有流行的cpu上。linux有著異常豐富的驅動程式資源,支援各種主流硬體裝置和最新硬體技術...
嵌入式linux學習筆記
1 溢位 兩個數相加,如果最高位的進製和此高位的進製不同,則產生溢位。2 進製和溢位的概念不一樣。3 預取 取得是編譯後得到的機器 解碼 執行 4 arm的彙編指令長度是確定的,32位。5 一條彙編指令 條件碼 4bit 操作碼 分類碼 s 1bit 目的暫存器 4bit 源暫存器 4bit 立即數...