shell既是一種命令語言,又是一種程式語言(既shell指令碼)。
she可以互動式地解釋和執行使用者輸入的命令;也可以定義各種變數,傳遞引數,並提供許多高階語言所具有的流程控制結構。
shell不屬於linux系統核心,可以呼叫系統核心的大部分相關功能來執行程式,建立文件並以並行的方式協調各個程式的執行。
1、資源重定向:既使用使用者指定的檔案來獲取或接收資訊。
輸入重定向:命令《檔名
以wall命令舉例:wall輸出重定向:命令》檔名
以cat命令舉例:cat /etc/passwd>file
系統會清空file檔案,並將/etc/passwd的結果輸出到file檔案中。
可使用》運算子,以追加形式輸出到file。
錯誤重定向:命令 2>file
以gcc命令舉例:gcc -c hello.c -o hello 2>file
系統會將gcc編譯時產生的錯誤資訊輸出到檔案file中。
2、管道:將多個簡單命令連線起來,管道符號為 |
舉例:ls -l /etc | grep init
輸出/etc目錄下包含init的關鍵字的檔案詳細資訊。
3、命令連線符:連線多條shell指令
; 連線符:前後命令,先後次序依次執行。
&&連線符:前後命令,執行遵循邏輯與關係。
||連線符:前後命令,執行遵循邏輯或關係。
4、文字提取器命令:提取文件或標準輸出的文字資訊
awk [-f 分隔符1] 『』
例:cat /etc/passwd| awk -f: 『』
解釋:分隔符1指定原始檔的分隔符,預設的情況下,以空格預設為分隔符。
分隔符2指定列印內容中的分隔符,預設的情況下,列印的內容不進行分隔。
$1和$3分別代表文字分割後的第一項和第二項的內容。
第乙個shell程式
#!/bin/sh
data=
"first shell script:"
echo
"data is:"
echo
$data
exit 0
shell中以#開頭的一般為注釋行,
第一行的#!/bin/sh
是一種特殊的注釋,#!
後的引數表明了系統將會呼叫那個程式來執行該指令碼。
1、變數的定義
變數名=值
注意:無須定義,沒有細緻的分類,給變數賦值時,賦值號兩邊不能有空格,需把值放在單引號和雙引號之間。
例:var='hello shell'
2、變數的引用
使用$符號來引用變數
例:
var=
"hello"
echo
$var 輸出var的值,hello
echo
"$var" 輸出var變數中儲存的值,hello
echo
'$var' 輸出為原樣,$var
3、變數的輸入
通過read關鍵字讀取變數。
read tmp
4、變數的分類
1)環境變數,又成永久變數
使用export設定
export num=1
2)位置變數
既執行指令碼時傳入指令碼對應指令碼位置的變數。
例:
#!/bin/sh
echo
"var:"$#
echo
"var name:"
$0echo
"first var:"
$1echo
"second var:"
$2echo
"third var:"
$3exit 0
執行:sh file a b c
由輸出結果可分析位置變數
var:3
var name:first
first var:a
second var:b
third var:c
3)標準變數
標準變數也是環境變數,在bash環境建立時生成。
通過檢視etc目錄下的profile檔案可以檢視系統中的標準環境變數
4)特殊變數
? 前乙個命令執**況,0表示成功,其他值表示失敗
$ 執行當前指令碼的當前程序id號
! 執行指令碼最後乙個命令
* 傳遞給指令碼或函式的全部引數
5、變數的運算子
1)let 算術運算和數值表示式測試
例:
#!/bin/sh
i=1let i=i+2
echo
"i="
$ilet i=i+4
echo
"i="
$i
輸出結果:
i=3
i=7
2)expr 對整形變數進行算術運算
例:
#!/bin/bash
a=4b=5
let c=a+b
echo
$clet
"f = b + c"
echo
$f((d=a+c))
echo
$de=
`expr $a + $d`
echo
$e
輸出結果:
9 14 13 17
1、if條件語句
1)單分支if語句格式:
if
[條件判斷語句]
;then
fi
2)雙分支if語句
if
[條件判斷語句]
;then
else
fi
3)多分支
if
[條件判斷語句]
;then
elif
[條件判斷語句]
;then
else
fi
2、test
test 選項 引數
如檢測某個檔案是否存在
if
test -f file
then..
fi
3、select語句
格式:
select 變數 in 列表
do...
[break]
done
4、case 語句
case var in
選項 1 )
...;
;'選項 2'
)...;
;"選項 3"
)...;
;...
*)... esac
exit 0
例項:
#!/bin/sh
echo -e "a:\c"
read a
echo -e "b:\c"
read b
echo -e "select(+-*/):\c"
read var
case
$var
in'+'
)echo "a+b="
'expr $a"+" $b';;
'-')echo "a-b="
'expr $a "-" $b';;
'*')echo "a*b="
'expr $a "*" $b';;
'/')echo "a/b="
'expr $a "/" $b';;
*)echo
"error"
esac
exit 0
1、for迴圈
for 變數 in 變數列表
do...
done
2、while 迴圈
while
[表示式]
do...
done
3、until 迴圈
until
[表示式]
do...
done
[function] 函式名 [()
]
呼叫 :函式名
關鍵字:local
,限制變數的作用範圍為函式中。
linux shell指令碼經典案例
linux shell 程式設計例項高階
2020/7/17 19:30
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的結果輸出到檔案...