shell指令碼 函式和陣列

2021-10-08 10:30:04 字數 4623 閱讀 5456

二、shell陣列

三、指令碼除錯

function

name()

呼叫 shell 函式時可以給它傳遞引數,也可以不傳遞。如果不傳遞引數,直接給出函式名字即可:

name
如果傳遞引數,那麼多個引數之間以空格分隔:

name

param1

param2

param3

1.定義乙個函式,輸出 乙個**:

#!/bin/bash

#函式定義

function

url()#

函式呼叫

url

執行結果:

你可以將呼叫放在定義的前面,也就是寫成下面的形式:

#!/bin/bash

#函式呼叫

url#

函式定義

function

url(

)

2.定義乙個函式,計算所有引數的和:

#!/bin/bash

function

getsum()

getsum

1020

5515

#呼叫函式並傳遞引數

echo

$?

執行結果:

100

#!/bin/bash

#filename:function2.sh

factorial()

if[-z$

1]then

echo

"need one parameter"

;exit1;

fifactorial$1

;echo

$rtn

;

2.shell遍歷目錄

#!/bin/bassh

#filename:foriin

lsforiin

"(ls -l $1)"

doecho$i#

這裡獲取檔名或者資料夾名,然後可以完成其它操作

done

$

其中,array_name 是陣列名,index 是下標。例如:n=$

$

$

兩者都可以得到 nums 陣列的所有元素。

#!/bin/bash

nums=(

29100138

9144

)echo$#

輸出所有陣列元素

nums[10

]=66#給第

10個元素賦值(此時會增加陣列長度)

echo$#

輸出所有陣列元素

echo$#

輸出第4

個元素執行結果:

29100138

9144

29100138

9144

6691

a=(

1234

)echo$1

2

a=(

1234

)echo$1

8834

刪除陣列:unset

a刪除陣列中的元素:unseta[

2]echo$1

34

將1-100的奇數輸出為陣列

#!/bin/bash#1

-100

奇數陣列

#for((

i=0;

i<=49

;i++

))#do

#arr[$i

]=$[

2*i+

1]#done

#echo

$

將陣列內60以下的元素刪除

#!/bin/bash

read

-p"請輸入元素:"

-alisti=

0#list=(

9055

1710

8899

3314

)forjin

$;doif[$j

-lt60];

then

unset

list[$i

] fi

leti++

done

echo

"$"

語法:sh -nvx 指令碼名

展示指令碼

[

root@localhost aa]#

bash

-nvx

oushuhe#!

/bin

/bash

sum=

0for((

i=0;

i<

=100;i

+=2)

)doletsum+=

$iecho

"$i"

done

echo

"$sum"

set -x :開啟調節模式

set +x:關閉調節模式

[

root@localhost aa]#

vimoushuhe#!

/bin

/bash

set-x##

除錯語句

sum=

0for((

i=0;

i<=30

;i+=

2))do

letsum+=

$iecho

"$i"

done

echo

"$sum"

輸出內容為:

+sum=0

+((i

=0))

+((i

<=30

))+let

sum+=0

+echo00

+((i

+=2)

)+((

i<=30

))+let

sum+=2

+echo22

+((i

+=2)

)+((

i<=30

))+let

sum+=4

+echo44

+((i

+=2)

)+((

i<=30

))+let

sum+=6

+echo66

+((i

+=2)

)+((

i<=30

))+let

sum+=8

+echo88

+((i

+=2)

)+((

i<=30

))+let

sum+=10

+echo

1010+(

(i+=

2))+

((i<=30

))+let

sum+=12

+echo

1212+(

(i+=

2))+

((i<=30

))+let

sum+=14

+echo

1414+(

(i+=

2))+

((i<=30

))+let

sum+=16

+echo

1616+(

(i+=

2))+

((i<=30

))+let

sum+=18

+echo

1818+(

(i+=

2))+

((i<=30

))+let

sum+=20

+echo

2020+(

(i+=

2))+

((i<=30

))+let

sum+=22

+echo

2222+(

(i+=

2))+

((i<=30

))+let

sum+=24

+echo

2424+(

(i+=

2))+

((i<=30

))+let

sum+=26

+echo

2626+(

(i+=

2))+

((i<=30

))+let

sum+=28

+echo

2828+(

(i+=

2))+

((i<=30

))+let

sum+=30

+echo

3030+(

(i+=

2))+

((i<=30

))+echo

240240

##輸出的結果,上面為每一步的實驗

shell指令碼基礎語法(if 和 陣列)

條件判斷命令 test 或者 例 test 1 lt 4 判斷1 4 test語句的等價形式 1 lt 4 檔案測試符號 f 存在且是普通檔案 d 存在且是目錄 s 存在且位元組數大於0 r 存在且可讀 w 存在且可寫 x 存在且可執行 如 test d mydoc 判斷mydoc是否是目錄例子 1...

shell指令碼之函式和陣列(含案例,適合新手練習)

1.3 shell函式應用 二 陣列 function 函式名 bin bash read p 請輸入兩個整數 shu 1 shu 2 function sqrt sqrt shu 1 shu 2基本格式 陣列名 value0 value1 value2.基本格式 陣列名 0 value 1 val...

shell中的函式和陣列

shell指令碼中的函式 函式就是把一段 整理到了乙個小單元中,並給這個小單元起乙個名字,當用到這段 時直接呼叫這個小單元的名字即可。格式 function f name 函式必須要放在最前面 示例1 bin bash input input 1 a b 示例2 bin bash sum sum 1...