標籤:函數
函數是什麼呢?我們為什麼有使用函數呢?
一、函數的相關知識
函數就是就具有某種特定功能的代碼打包起來,提供一個介面以供使用。這樣做的好處是:一方面可以實現代碼複用,例如:許多物件導向的語言,像Java提供的許多類和方法(函數)一樣;另一方面是為了代碼的模組化編程,這樣可以實現多人同時開發代碼。
在 shell 中函數主要的作用是實現代碼複用,當然利用函數比編寫代碼可以是代碼更簡潔,易讀。
shell中如何定義函數?
文法格式:
function F_NAME {
函數體
}
或者
F_NAME() {
函數體
}
二、函數樣本
#!/bin/bash# description: 將一個外部命令本身和它所依賴的庫檔案拷貝到指定路徑下# version:0.0# date:2014-07-23# author: Alex# license: GPL# 類比根檔案系統ch_root="/mnt/sysroot"[ ! -d $ch_root ] && mkdir $ch_rootbincopy() {if which $1 &>/dev/null; then# local 定義局部變數,它的範圍是本個函數,一般我們在這裡盡量使用局部變數,而不使用全域變數local cmd_path=`which --skip-alias $1`local bin_dir=`dirname $1`[ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}[ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}# 用 return 返回函數的狀態值 是一個數字 0-255return 0elseecho "Command not found."return 1fi}libcopy() {lib_list=$(ldd `which --skip-alias $1` | grep -Eo ‘/[^[:space:]]+‘)for loop in $lib_list;dolocal lib_dir=`dirname $loop`[ -b ${ch_root}${lib_dir} ] || mkdir -p ${ch_root}${lib_dir}[ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}done}read -p "Please input a command: " commandwhile [ "$command" != "quit" ];doif bincopy $command ;thenlibcopy $commandfiread -p "Please input a command: " commanddone
本文出自 “逆水寒” 部落格,請務必保留此出處http://guoting.blog.51cto.com/8886857/1528506
Linux Shell編程之三函數