把相同程式段定義成函式,可以減少整個程式的**量,提公升開發效率
增加程式的可讀性,易讀性,提公升管理效率
可以失效程式功能模組化,使程式具備可移植性
其實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[root@web1 scripts]# boy1boy1
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/bashfunction
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/shif [ $# -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 用自己的規...