shell基本元素
(1)#! /bin/bash 必須的,指出shell的型別
(2)# 注釋
(3)變數
(4)控制
乙個shell指令碼
vi mkdir.sh
#!/bin/bash
# this is mkdir
cd /home
mkdir shelltest
echo "shelltest is created."
1.echo命令用於在螢幕上顯示訊息
使用方式:echo 要顯示的內容
2.#用於在shell指令碼中進行注釋
shell的一般結構
shell 型別
函式主過程
一般模板 abc.sh
#! /bin/bash shell型別
#a ****** shell script example
#a function
sayhello() 函式
echo "programme starts here..." 主過程
sayhello
echo "programme ends."
shell中的特殊符號
1、注釋符#
除了#!/bin/bash裡的#特殊
2、美元符 $
變數符。與反斜槓轉義符相反,使其後的普通字元作為變數名,如$a表示變數a的值。變數字元長度超過1個時,用{}括起來
3、單引號
被引起的字元全部做普通字元,即全部原樣
echo 『my $shell』
4、雙引號
引號內的內容,除$、轉義符\、倒引號`這三個保留特殊功能,其他字元均做普通字元。
5、倒引號(數字1鍵旁邊的那個鍵)
引號內的字串當做shell命令列解釋執行,得到的結果取代整個倒引號括起來的部分。
`pwd` 即pwd命令的執行結果
$logname 系統變數
區別下面幾句:
echo 『my home is $home』
echo 「my home is $home」
echo `my home is $home`
echo 「my home is `pwd`」
echo 『my home is `pwd`』
6. 反斜線
反斜線是轉義字元,它能把特殊字元變成普通字元。在某個字元前面利用反斜槓(\)能夠阻止shell把後面的字元解釋為特殊字元。、
echo 「filename is n0\$\`」 變數
建立變數
1、可以在任何時間通過簡單的賦值來建立變數
語法:=
shell中的所有變數都被當作字串
2、引用變數
$符號用於引用乙個變數的內容
variable1=$
3、在執行shell指令碼時,shell還允許使用者從鍵盤中輸入乙個值給變數。可以使用read命令來做。
read fname
命令替換
1、在單個命令列中使用多個命令的乙個方法是通過命令替換
例:echo "the date is `date`"
2、expr命令:用於求值算術表示式。該命令輸出被傳送到標準輸出
例:expr 4+5 將在螢幕上顯示9
3、可以在$((...))中包括乙個表示式,用下面的命令來計算它的值:
$((表示式))
實驗:編寫乙個簡單的四則計算器
echo "please enter the first number."
read totalqueries
echo "please enter the second number."
read answered
echo "please enter the operation."
read opt
result=$((totalqueries $opt answered))
echo "the result of $totalqueries $opt $answered=$result"
條件判斷命令
test n1 -引數 n2 (或 –引數 表示式)
[ n1 -引數 n2 ]
真返回0,假返回1。
引數:-lt 小於
-le小於等於
-gt 大於
-ge 大於等於
-eq 等於
-ne 不等於
·test語句的等價形式[ 1 –lt 4 ]
可用中括號代替test,把表示式括起來實現判斷
注意表示式與中括號間有空格。
test 1 –lt 4 #判斷1<4
echo $? #結果為0
檔案測試
-f 存在且是普通檔案
-d 存在且是目錄
-s 存在且位元組數大於0
-r 存在且可讀
-w 存在且可寫
-x 存在且可執行
如:test -d 「mydoc」 [ -d "mydoc" ]
判斷mydoc是否是目錄
eg:檢測從命令列輸入的檔案是否存在
if [ $# -ne 1 ]
then
echo "usage -$0 file-name"
exit 1
fiif [ -f $s1 ]
字串測試
test s 字串s非空
test s1=s2 字串s1等於s2
test s1!=s2 字串s1不等於s2
test -z s 字串長=0,即為空串
test -n s 字串長》0
=: 等於則為真
!=:不相等則為真
-z字串:字串長度為零則為真
-n字串:字串長度不為零則為真
分支語句
if [ $# -eq 0 ]
then
echo 「輸入了0個引數」
elif [ $# -gt 1 ]
then
echo 「輸入了多個引數」
else
echo 「輸入了1個引數」fi
case 「$#」 in
0) echo 「輸入了0個引數」 ;;
1) echo 「輸入了1個引數」 ;;
*) echo 「輸入了多個引數」;;
esac
每個分支條件後必須以兩個分號結尾
迴圈語句
只有條件為真時,就執行do和done之前的命令
while 《條件》
do 《命令(s)>
done
while例子——求1到100的和
declare -i i=1
sum=0
while [ $i –le 100 ]
dosum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
for迴圈取一列值作為輸入並對迴圈中每個值執行迴圈
for variable_name in
do...
done
for i in `seq 1 9`
doecho `expr $i \* 10`
done
或寫 echo $(expr $i \* 10)
乘號前加轉義符,與數字間要有空格。
read變數
read 變數1 [變數2 …]
可以從鍵盤上讀取多個變數的值,使用者輸入資料時,以空格或者tab鍵作為分隔。
如果輸入的資料個數不夠,則從左到右對應賦值,沒有輸入的變數為空;
如果輸入的資料個數超了,則從左到右對應賦值,最後乙個變數被賦予剩餘的所有資料。
輸出a到b序列數各數的10倍數
read a b
for i in `seq $a $b`
doecho `expr $i \* 10`
done
shell指令碼 之入門
who 可以檢視現在系統有誰登入。who wc l 計算使用者的個數 cat filename 建立檔案,使用cat複製終端的內容到filename 檔案中 context 在終端中輸入的內容 d ctrl d表示end of file cat filename 檢視filename檔案中的內容,將...
Linux之shell指令碼
1.shell是系統的使用者介面,提供了使用者與核心進行互動操作的一種介面。它接收使用者輸入的命令並把它送入核心去執行。2.每個linux系統的使用者可以擁有他自己的使用者介面或shell,用以滿足他們自己專門的shell需要。同linux本身一樣,shell也有多種不同的版本 比如bash或sh ...
linux之shell指令碼
shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務,是指令碼中命令的直譯器。1 記錄命令執行的過程和執行邏輯,以便以後重複執行 2 指令碼可以批量處理主機 3 指令碼可以定時處理主機。bin bash 幻數 指令碼執行的直譯器,最優先執行vim自動新增...