shell指令碼小結

2021-09-29 02:43:41 字數 1599 閱讀 1553

一、輸入

使用者的輸入用$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...