1.變數
yourname="zhangsan"
echo
$
不需要型別宣告,賦值時等號中間不能有空格,使用時必須在前面加$,建議盡量將變數名用花括號包裹
readonly yourname
unset yourname
2. 字串
單引號和雙引號的區別:
3. 陣列
array_name=(1
'zhangsan')
echo$#1
echo
$#1 zhangsan
echo$#1
echo
$#2
4. shell注釋
shell只有一種方式注釋,就是使用#
,沒有多行注釋,如需注釋**塊,可以使用{}
將其包裹成為乙個函式,只要不被呼叫即相當於失效。
5. 變數傳遞
向指令碼傳遞變數時,指令碼內部使用$1
$2
...
去引用傳入的第乙個引數 第二個引數 …
$#
//引數個數
$*//所有引數以空格間開並作為乙個字串整體返回
$@//同$*
$*和$@的區別只有在雙引號中體現出來。假設在指令碼執行時寫了三個引數 1、2、3,,則
\$*
等價於 「1 2 3」(傳遞了乙個引數),而$@
等價於 「1」 「2」 「3」(傳遞了三個引數)。
6. 算術運算
shell原生不支援簡單的算術運算,但可以使用表示式計算工具expr完成求值。
使用方式:
a=10
b=20
val=`expr $a + $b`
echo val #30
expr表示式放置在反括號裡,運算子前後必須用空格間開,乘法運算子為\*
7. 其它運算子
邏輯運算子
說明$eq
等於$ne
不等於$gt
大於$lt
小於$ge
大於等於
$le小雨等於
布林運算子說明!
非運算子
-o/||
或運算子
-a/&&
與運算子
檔案測試運算子
說明-d
是否為資料夾
-f是否為檔案
-r是否可讀
-w是否可寫
-x是否可執行
-s是否為空
-e是否存在
8. 分支語句
#if分支
if condition
then
command1
command2
...elif condition
then
command1
command2
...else
command1
...fi#case分支
read anum
case $anum in
1) echo '輸入1'
;;2) echo '輸入2'
;;*) echo '輸入其它'
;;esac
分支下沒有任何執行語句不被允許,必須選擇忽略該分支。
例如
a=10
b=20
if [ $a == $b ]
then
echo
'兩數相等'
elif [ $a
-lt$b ]
then
else
echo
'兩數不等'
fi
其中elif
分支下沒有執行語句,將報錯。
case分支語句,必須使用in
,每個匹配模式新增)
,匹配執行語句完成新增;;
,匹配所有其它使用*
,最後使用esac
封尾。
通常條件表示式有以下幾種用法:
if [ $a
-lt$b ]
if test $a
-lt$b
第一種
之間的任何乙個空格不能少。更多的是採用test命令。
9. 迴圈語句
#輸出 張三 李四
for name in
'張三'
'李四'
doecho
$done
#輸出 1 2 3 4 5
index=1
while(($
<= 5))
doecho
$let
"index++"
done
#接受鍵盤輸入 並輸出
while
read some
doecho
$" is you say"
done
#無限迴圈1
while
true
do command
done
#無限迴圈2
for((;;))
do command
done
#無限迴圈3
until false
do command
done
注:for
while
until
跟條件語句,需使用(())
,支援break
跳出全部迴圈,continue
跳出當前迴圈。
10. 函式
#不帶參帶返回值
functionname
() functionname
echo $? #10
#帶參functionname
() -ge $
then
return
$else
return$fi
}echo
"-----函式開始執行-----"
functionname $1
$2echo
"-----較大值為---------"
echo $?
Linux入門篇(五) Shell(一)
這一系列的linux入門都是本人在 鳥哥的linux私房菜 的基礎上總結的基本內容,主要是記錄下自己的學習過程,也方便大家簡要的了解 linux distribution是ubuntu而不是書本上推薦的centos,建議裝雙系統,不要使用虛擬機器。在github上 linuxpractice 其他內...
shell指令碼入門 符號篇
shell就是乙個命令列直譯器,它的作用是解釋執行使用者的命令,使用者輸入一條命令,shell就解釋執行一條,這種方式稱為互動式 interactive shell還有一種執行命令的方式稱為批處理 batch 使用者事先寫一 個shell指令碼 script 其中有很多條命令,讓shell一次把這些...
Linux Shell指令碼程式設計入門篇之二
一 什麼是指令碼?提前寫好可執行 用來完成特定任務的檔案,是乙個順序批處理的解釋性程式。常見的指令碼語言如下圖所示 二 指令碼的建立過程 寫出自己的第乙個shell指令碼 案例需求 新建乙個名為mtd的本地使用者。此使用者能夠正常登入,其密碼為654654。2 編寫可執行檔案 指令碼語言 各步驟如何...