shell函式:
將需要重複使用的操作,定義為公共的語句塊,叫函式
語法結構:
格式1:
function 函式名
格式2:
函式()
呼叫函式:
函式名 引數1 引數2 ...
//在函式中使用位置變數來呼叫引數
位置變數:
# sh test.sh 引數1 引數2
# vim test.sh
#!/bin/bash
echo $1
echo $2
$# : 顯示一共有多少個引數
$@ : 顯示所有的引數
$? : 顯示返回的狀態碼
$$ : 顯示當前指令碼的程序號
檢視程序:ps -aux
殺死程序:kill -9 pid號
ctrl+z 放入後台
jobs 檢視後天
例項:同時建立abc目錄且在此目錄下建立a.txt檔案
# mymk()
# mymk abc a.txt
中斷與退出:
break:結束整個迴圈
continue:結束本次迴圈
exit:結束整個指令碼
例項:輸出30以內3的倍數
知識點:陣列、continue
#!/bin/bash
for i in `seq 30`
do [ $[i%3] -ne 0 ] && continue | | echo $i
done
字串擷取:
字元擷取的三種用法:
1.變 量名
:起始位
置:長度
2.exp
rsub
str「
2.expr substr 「
變數名:起始
位置:長
度2.e
xprs
ubst
r「變數名」 起始位置 長度
3.echo 「$變數名」 | cut -b 起始位置-結束位置
字串替換兩種方法:
1.只替換第乙個匹配結果:
$2.替換全部匹配結果:
$字串掐頭去尾:
1.$
注意:起始位置從0開始
# phone=183015935786
統計字串的長度:
#echo $
11擷取前三位:
#echo $
//如果是從第乙個開始截,可以省略0不寫
#echo [ho
ne::
32.ex
prsu
bstr
「2.expr substr 「
[hone:
:32.
expr
subs
tr「變數名」 起始位置 長度
注意:起始編號從1開始,注意與$區分開
擷取前三位:
#expr substr 「$phone」 1 3
183
3.echo 「$變數名」 | cut -b 起始位置-結束位置
注意:起始編號從1開始,與expr類似
擷取前三位:
#echo「$phone」 | cut -b 1-3
//-b選項是按位元組擷取
擷取後六位
#echo「$phone」 | cut -b 6-
//如果擷取到最後一位,可忽略不寫
擷取單個第六位的字元:
#echo「$phone」 | cut -b 6
擷取多個不連續的字元:用逗號分割
#echo「$phone」 | cut -b 6,9,11
例項:生成乙個隨機密碼
# vim rand.sh
x=1234567890 adwqasdwqqweqwqweasdqafweasdwaeasd
for i inseq 8
donum=[ra
ndom
tmo=
[random%62] tmo=
[rando
mtmo
=[x:num:1]
pass=[pa
ss
][pass]
[pass]
tmpdone
echo $pass
shell指令碼編劇 函式定義 指令碼中斷
1.只替換第乙個匹配結果 將第乙個8替換為xx echo 2.替換全部的匹配結果 將phone變數中所有8給替換為xx echo 字串掐頭去尾 a head 1 etc passwd echo a root x 0 0root root bin bash root x 0 0 root root 例...
SHELL指令碼函式
shll作為指令碼語言,也有自己的函式。但是他有許多與其他語言不同的特點 在這裡,定義了乙個函式,有2個引數,第乙個 陣列,第二個 單個值。這個函式的作用是判斷第二個引數的值是否在第乙個引數 陣列 裡面。bin sh 定義函式 fun function contain do ta array ech...
shell指令碼 函式
函式是乙個指令碼 塊,由使用者對其自定義,可以在指令碼的任意位置建立,按照格式將命令寫入到函式中,系統不會直接執行函式中的命令。如果想要這個函式,只要呼叫這個函式的名稱 只需要輸入名稱 就可以了,而且可以在指令碼的任意位置呼叫,使用函式的好處在於模組化以及 可讀性強。function 函式名稱 可以...