一、輸入
使用者的輸入用$n來表示,n為1-9的自然數,$0為指令碼檔名
eg:#!/bin/bash
echo $@
echo $*
echo $#
echo $$
echo $0
echo $1
echo $2
echo $3
二、變數定義
所有變數都是字串,不需要單獨定義,就可以直接賦值。
引用變數在名字前加$,可以加雙引號包含要引用的變數。
eg:#!/bin/bash
a=bc="dd"
echo $a
echo $c
echo "$a"
三、條件判斷
注意: 等價於test,所以要在[右邊和]的左邊留有空格
(1)數值測試:
-eq:等於則為真
-ne:不等於則為真
-gt:大於則為真
-ge:大於等於則為真
-lt:小於則為真
-le:小於等於則為真
(2)字串測試:
=:等於則為真
!=:不相等則為真
-z 字串:字串長度偽則為真
-n 字串:字串長度不偽則為真
(3)檔案測試:
-e 檔名:如果檔案存在則為真
-r 檔名:如果檔案存在且可讀則為真
-w 檔名:如果檔案存在且可寫則為真
-x 檔名:如果檔案存在且可執行則為真
-s 檔名:如果檔案存在且至少有乙個字元則為真
-d 檔名:如果檔案存在且為目錄則為真
-f 檔名:如果檔案存在且為普通檔案則為真
-c 檔名:如果檔案存在且為字元型特殊檔案則為真
-b 檔名:如果檔案存在且為塊特殊檔案則為真
linux還提供了與(「!」)、或(「-o)、非(「-a」)三個邏輯操作符用於將測試條件連線起來,其優先順序為:「!
」最高,「-a」次之,「-o」最低。同時,bash也能完成簡單的算術運算,格式如下:
$[expression]
例如:var1=2
var2=$[var1*10+1]
則:var2的值為21。
linux 中的命令的輸出作為另乙個集合的輸入,則要將該命令包含在 「 `」中間;而如果僅僅是執行命令,則不需要。
四、函式
#!/bin/bash
#set -o nounsettreat unset variables as an error
foo()
foo2()
echo $str
foo "ab" "cd"
echo $str
out=`foo2`
echo $?
echo $out
注意: 1、定義函式時,不需要形參,在函式體中直接通過$1-n來引用。
2、函式可以使用return 返回整數值,但是不能通過等號賦值給函式的呼叫者。
函式只能通過echo 命令返回內容給呼叫者,同時指令碼不支援字串加號操作。
3、如果要獲得函式的輸出,並賦值給變數,則要將函式放在「`「之間。
4、如果要獲得函式的返回值,通過$?來獲取。
Shell指令碼程式設計詳解
shell命令列的執行 編寫 修改許可權和執行shell程式的步驟 在shell程式中使用引數和變數 表示式比較 迴圈結構語句和條件結構語句 在shell程式中使用函式和呼叫其他shell程式 shell命令列的書寫規則 對shell命令列基本功能的理解有助於編寫更好的shell程式,在執行shel...
Shell指令碼基礎知識
1.1 語法基本介紹 1.1.1 開頭 程式必須以下面的行開始 必須方在檔案的第一行 bin sh 符號 用來告訴系統它後面的引數是用來執行該檔案的程式。在這個例子中我們使用 bin sh來執行程式。當編輯好指令碼時,如果要執行該指令碼,還必須使其可執行。要使指令碼可執行 編譯 chmod x fi...
Makefile與shell指令碼區別
在makefile可以呼叫shell指令碼,但是makefile和shell指令碼是不同的。1 shell中所有引用以 打頭的變數其後要加 而在makefile中的變數是以 打頭的後加 例項如下 makefile path data subpath path shell path data subp...