Linux Shell編程之三函數

來源:互聯網
上載者:User

標籤:函數


     函數是什麼呢?我們為什麼有使用函數呢?


一、函數的相關知識

    函數就是就具有某種特定功能的代碼打包起來,提供一個介面以供使用。這樣做的好處是:一方面可以實現代碼複用,例如:許多物件導向的語言,像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編程之三函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.