shell指令碼編劇 函式定義 指令碼中斷

2021-10-04 10:27:50 字數 2260 閱讀 7392

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 函式名稱 可以...