最近學習了shell指令碼程式設計,感覺自己的指令碼寫的不太好,所以想把shell指令碼相關的知識系統的整理一下,便於以後的學習和使用。
shell指令碼是利用shell的功能所寫的乙個程式,這個程式是使用純文字檔案,將一些shell的語法與指令寫在裡面,然後用正規表示式,管道命令以及重定向向等功能,以達到我們所想要的處理目的。它的基本用途有:
1.自動化常用命令
2.執行系統管理和故障排除
3.建立簡單的應用程式
4.處理文字或檔案
...
第一行必須包括shell 宣告序列:#! 也就是我們通常所說的「蛇棒」,如:`#!/bin/bash`
新增注釋,注釋以#開頭,注釋行會被直譯器忽略。
第二步、執行指令碼
給予執行許可權,在命令列上指定指令碼的絕對或相對路徑
直接執行直譯器,將指令碼作為直譯器程式的引數執行
指令碼示例:
#!/bin/bash
# ------------------------------------------
# filename: hello.sh
# revision: 1.0
# date: 2017/09/16
# author: fly
# email:
# description: this is the first script
# ------------------------------------------
echo 「hello world」
1.檢測指令碼的語法錯誤
bash -n /path/to/some_script
只檢測,不執行指令碼,並且不能檢測指令碼的邏輯錯誤
2.除錯執行
bash -x /path/to/some_script
逐行執行指令碼,便於直接判斷指令碼錯誤,但可能會有些不安全
自定義變數
根據變數的生效範圍,將自定義變數分為:
本地變數: 僅對當前shell有效,對子shell也無效
環境變數:對當前shell及其子shell均有效。
區域性變數:生效範圍為當前shell、程序中某**片斷( 通常指函式)
使用自定義變數前,我們需要對變數進行賦值,下面是變數命名規則:
1)使用變數無需事先宣告
2)首個字元必須為字母(a-z,a-z)
3)中間不能有空格,可以使用下劃線(_)
4)不能使用標點符號
5)不能使用bash裡的關鍵字(可用help命令檢視保留關鍵字)
6)需要給變數賦值時,可以這麼寫:
7)變數名=值
8)取乙個變數的值,只需在變數名前面加乙個$ ( 注意: 給變數賦值的時候,不能在"="兩邊留空格 )
例:
a=1 (本地變數)
export b=2(環境變數)
local c=3(區域性變數)
使用變數結束後,可以用unset name
刪除自定義變數
位置變數
位置變數:在指令碼**中呼叫通過命令列傳遞給指令碼的引數
$1, $2, ... :對應第1 、第2 等引數,shift [n] 換位置
$0: 命令本身
$*: 傳遞給指令碼的所有引數,全部引數合為乙個字串
$@: 傳遞給指令碼的所有引數,每個引數為獨立字串
$#: 傳遞給指令碼的引數的個數
$@ $*只在被雙引號包起來的時候才會有差異
可以用set --
清空所有位置變數
特殊變數
變數含義
$?變數儲存最近的命令退出狀態
$0當前指令碼的檔名
$#傳遞給指令碼或函式的引數個數
$*/$@
傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,$@與$* 稍有不同
$$當前shell程序id,對於 shell 指令碼,就是這些指令碼所在的程序id
請看下面指令碼:
#!/bin/bash
echo "file name: $0"
echo "first parameter : $1"
echo "first parameter : $2"
echo "quoted values: $@"
echo "total number of parameters : $#"
執行結果:
./test.sh a b
file name : test.sh
first parameter : a
second parameter : b
quoted values: a b
total number of parameters : 2
算數運算
let運算命令
#!/bin/bash
a=2;
b=3;
let sum=a+b
echo $sum
[ ]運算方法#!/bin/bash
a=2;
b=3;
sum=$[a+b]
echo $sum
(( ))運算方法#!/bin/bash
a=2;
b=3;
sum=$((a+b))
echo $sum
expr運算方法a=1
b=2sum=$(expr $a + $b)
echo $sum
精密計算echo "1*2*3"|bc
今天對shell指令碼就介紹到這裡,下次繼續對shell指令碼進行整理,再見。 shell 程式設計 shell 指令碼基礎
shell 是乙個命令直譯器,它在作業系統的最外層,負責直接與使用者進行對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出到螢幕反饋給使用者。把 linux 命令或語句放在乙個檔案中,通過這個程式檔案去執行,這個程式為 shell 指令碼或 shell 程式 可以在指令碼中...
shell指令碼程式設計基礎
1.使用多個命令 2.建立shell指令碼檔案 shell指令碼中注釋一般以 開頭,shell指令碼不會處理注釋的行。但是,shell指令碼的第一行是例外。後的 會告訴shell用哪個shell來執行指令碼,shell會根據命令在檔案 現的先後順序進行處理。下面是建立指令碼名為demo的檔案。bin...
shell指令碼程式設計基礎
建立檔案,為檔案新增可執行許可權 chmod x file 格式 在檔案的第一行指定所使用的shell bin bash 注釋 開頭的命令 首行的 bin bash 除外 顯示訊息 echo命令 預設情況下不需要加引號,若需要顯示的字串中含有單引號或雙引號中的一種,可使用另一種將字串引起來以示區別。...