shell 學習筆記7 shell 函式

2022-02-07 00:41:05 字數 4545 閱讀 9305

把相同程式段定義成函式,可以減少整個程式的**量,提公升開發效率

增加程式的可讀性,易讀性,提公升管理效率

可以失效程式功能模組化,使程式具備可移植性

其實linux系統裡面近2000個命令可以說都是shell的函式

function 名稱() 復合命令塊[重定向]

function

函式名 ()

1)開發乙個建立兩個簡單函式並呼叫執行

[root@web1 scripts]# cat test21.sh

#!/bin/bash

boy()

function

girl()

boygirl

[root@web1 scripts]# ./test21.sh

i am boy

i am girl

[root@web1 scripts]#

cat test21-1.sh

#!/bin/bash

boy()

function

girl()

boygirl

boy1

[root@web1 scripts]# ./test21-1.sh

i am boy

i am girl

./test21-1.sh: line 10

: boy1: command not found

[root@web1 scripts]#

2)分離函式體和執行行數的指令碼檔案

[root@web1 scripts]# cat >>/etc/init.d/functions<<-eof

>boy()

>eof

[root@web1 scripts]# !tail

tail -3 /etc/init.d/functions

boy()

[root@web1 scripts]#

[root@web1 ~]# function

boy1

[root@web1 scripts]# boy1

i am boy1

經函式的傳參換成指令碼檔案命令列傳參,判斷任意指定的url是否存在移除

1)實踐指令碼傳參,檢查web url是否正常

[root@web1 scripts]# cat test23.sh

#判斷傳參格式是否為1

#!/bin/bash

if [ $# -en 1

]

#「$#」獲取當前執行的指令碼後面接的引數總個數

then

echo $"

usage:$0 url

"exit 1fi

wget --spider -q -o /dev/null --tries=1 -t 5 $1

#t超時實踐,這裡的$1為指令碼的引數

if [ $? -eq 0

]#「$

?」獲取上乙個指令的執行狀態返回值,0成功,非零失敗

then

echo

"$1 is yes

"else

echo

"$1 is no

"fi

2)將上述檢測的功能寫成函式,並將函式傳參轉換成指令碼命令列傳參,判斷任意指定的url是否存在異常

#!/bin/bash

function

usage()

function

check_url()

function

main()

#接收函式的傳參,即把下文main結尾的$*

傳到這裡

main $*#這裡的$*

就是把命令列接收的所有引數作為函式引數傳給函式內部,是一種常用收發

執行結果

3)將函式的傳參轉換層指令碼檔案命令列傳參,判斷任意指定的url是否存在異常,並以更專業的顯示

#!/bin/sh

. /etc/init.d/functions            

function

usage()

function

check_url()

function

main()

main $*

效果

[root@web1 scripts]# chmod +x test25.sh

未更新

#!/bin/sh

if [ $# -ne 1]

then

echo $"

usage:$0

"exit 1fi

if [ "

$1" = "

start"]

then

rsync --daemon

if [ `netstat -lntup|grep rsync|wc -l` -ge 1

]

then

echo

"rsyncd is started.

"exit 0fi

elif [ "

$1" = "

stop"]

then

pkill rsync

if [ `netstat -lntup|grep rsync|wc -l` -eq 0

]

then

echo

"rsyncd is stopped.

"exit 0fi

elif [ "

$1" = "

restart"]

then

pkill rsync

sleep

2rsync --daemon

else

echo $"

usage:$0

"exit

1fi

Shell 學習7 Shell 特殊變數

前面已經講到,變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果 29949特殊變數列表 0 當前指令碼的檔名 n 傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如...

7 shell程式設計

一.shell指令碼介紹 shell是什麼?一門程式語言,用來解釋執行這門程式語言語法的直譯器 計算機體系結構 命令 shell直譯器 系統呼叫的介面 核心 計算機硬體 什麼是程式語言 人 程式語言 計算機 什麼是程式設計 人 程式語言 計算機 先幹什麼 再幹什麼 然後幹什麼 什麼是程式 我們把計算...

作業系統7 shell

使用者體驗 命令執行 the shell 一旦作業系統載入之後,他就開始等待命令。命令可以通過 cli command line inte ce 或者 gui graphical user inte ce 輸入。命令輸入會進入乙個命令的解析器 在unix世界這個叫做shell shell 用自己的規...