Linux Shell程式設計

2021-08-20 04:21:30 字數 2769 閱讀 4552

流程控制

與其他語言類似,略。

條件測試

命令test[可以測試乙個條件是否成立,如果測試結果為真,則該命令的exit status為0,如果測試結果為假,則命令的exit status為1。

傳給命令的各引數之間應該用空格隔開,比如,$var、-gt、3、]是[命令的四個引數,它們之間必須用空格隔開。

常見的測試命令如下表所示:

字串比較

結果string1 = string2

如果兩個字串相同,結果就為真

string1 != string2

如果兩個字串不同,結果就為真

-n string

如果字串不為空,則結果為真

-z string

如果字串為乙個空串(null),則結果為真

算術比較

結果expression1 -eq expression2

如果兩個表示式相等,則結果為真

expression1 -ne expression2

如果兩個表示式不等,則結果為真

expression1 -gt expression2

如果expression1大於expression2,則為真

expression1 -ge expression2

如果expression1大於等於expression2,則為真

expression1 -lt expression2

如果expression1小於expression2,則為真

expression1 -le expression2

如果expression1小於等於expression2,則為真

!expression

表示式為假,則結果就為真;反之亦然

檔案條件測試

結果-d file

如果檔案是乙個目錄,則為真

-f file

如果檔案是乙個普通檔案,則為真;也可以用來測試檔案是否存在

-r file

如果檔案可讀,則結果為真

-s file

如果檔案大小不為0,則結果為真

-w file

如果檔案可寫,則結果為真

-x file

如果檔案可執行,則結果為真

函式shell函式沒有引數列表並不表示不能傳引數,事實上,函式就像是迷你指令碼,呼叫函式時可以傳任意個引數,在函式內同樣是用$0、$1、$2等變數來提取引數,函式中的位置引數相當於函式的區域性變數,改變這些變數並不會影響函式外面的$0、$1、$2等變數。函式中可以用return命令返回,如果return後面跟乙個數字則表示函式的exit status

**示例:

#!/bin/bash

main()

#列印大於3的引數,只是示例,沒有進行引數合法性檢查

greate_num()

main $@

greate_num 1 2 3 4 5 6

echo 'greate_num result='$?

輸出結果:

sl@li:~/works/study/shell$ ./script.sh 1 2

main args num=212

---------45

6greate_num result=3

位置引數和特殊變數

有很多特殊變數是被shell自動賦值的,如下表所示:

特殊變數

描述$0

當前程式的名稱,相當於c語言main函式的argv[0]

$1、$2…

這些稱為位置引數(positional parameter),相當於c語言main函式的argv[1]、argv[2]…

$#引數個數,相當於c語言main函式的argc - 1,注意這裡的#後面不表示注釋

$@表示引數列表"$1" 「$2」 …,例如可以用在for迴圈中的in後面。

$?上一條命令的exit status

$$當前shell的程序號

**示例見上面函式部分的的示例**。

shell指令碼的除錯方法

shell提供了一些用於除錯指令碼的選項,如下所示:

選項描述

-n讀一遍指令碼中的命令但不執行,用於檢查指令碼中的語法錯誤

-v一邊執行指令碼,一邊將執行過的指令碼命令列印到標準錯誤輸出

-x提供跟蹤執行資訊,將執行的每一條命令和結果依次列印出來

使用這些選項有三種方法:

在命令列提供引數(sh -x ./script.sh

在指令碼開頭提供引數

#! /bin/sh -x
在指令碼中用set命令啟用或禁用引數

#! /bin/sh

if [ -z "$1" ]; then

set -x

echo "error: insufficient args."

exit 1

set +x

fi

set -xset +x分別表示啟用和禁用-x引數,這樣可以只對指令碼中的某一段進行跟蹤除錯。

linux shell簡明教程(二)

linux shell 程式設計

bin bash comments your commands go here 首行中的符號 告訴系統其後路徑所指定的程式bash即是解釋此指令碼檔案的shell程式。除第一行外,以 開頭的行就是注釋行,直到此行的結束。如果一行未完成,可以在行尾加上 這個符號表明下一行與此行會合併為同一行。有環境變...

linux shell 程式設計

1 程式設計入門 shell的簡介。從程式設計師的角度來看,shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理...

Linux Shell 程式設計

檔案描述 shell 代號 dev stdin 標準輸入,一般指的是鍵盤輸入 dev stdout 標準輸出,一般指終端顯示器 dev stderr 標準錯誤,一般指終端顯示器 l輸出重定向 l輸入重定向 l追加重定向 l錯誤重定向 2 l輸出和錯誤同時重定向 應用例子 1.將 ls的結果輸出到檔案...