1. 程式人生 > >Shell指令碼中的自定義函式

Shell指令碼中的自定義函式

在寫程式時,經常會用到函式,一般開發工具擁有豐富的函式庫。但有時還需要根據自己的需要自定義函式滿足我們的需求。

在linux中,寫shell指令碼也一樣,有時會用到自定義函式。

函式,最簡單的定義為:將一組命令集或語句形成一個可用塊,這些塊稱為函式。

1、定義函式的格式:

function-name ( ){
        command1
        ........
}

#函式名前面也可以加上function關鍵字
function  function-name( ) {  
        command1
        ........
}

2.函式呼叫

以下是一個函式的指令碼例項:


    #!/bin/bash
    function hello(){          #宣告函式
      echo "Hello!"            #函式的主體,輸出"Hello!"
    }                          #函式結束
    hello                      #呼叫函式

3.引數傳遞
 向函式傳遞引數就像在指令碼是使用變數位置$1,$2,$3...$9
 以下是一個傳遞引數的例項:
  #!/bin/bash
  function hello(){
      echo "Hello! The first parameter is '$1'."
  }
  hello good
#該指令碼執行的結果是: Hello! The first parameter is 'good'.

4.函式檔案
  儲存函式的檔案,用以上的例子寫成一個函式檔案如下:

  #!/bin/bash
  function  hello ( ){
    echo "Hello!"
    return 1
  }
上面的hellofunction檔案就是一個函式檔案,可通過另一個指令碼來呼叫
  #!/bin/bash
  . hellofunction      #呼叫函式檔案,點和hellofunction之間有個空格
  hello                #呼叫函式
5.載入和刪除

  用set檢視已載入的函式
  用unset function-name 取消載入
  舉例如下:
  #!/bin/bash
  #hellof
  . hellofunction
  unset hello
  hello            #因為已經取消載入,所以會出錯


相關推薦

學會使用MySQL定義函式和儲存過程

一、快速瞭解什麼是儲存過程和函式?   儲存過程和函式是事先經過編譯並存儲在資料庫中的一段 SQL 語句的集合,呼叫儲存過程 和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對 於提高資料處理的效率是有好處的。   在對儲存過程或函式進行操作時,需要

hive定義函式定義json字串解析函式

hive中如何定義自己的函式 寫一個Java 程式,實現想要的函式功能 1.匯入hive安裝目錄的lib目錄的包 2新建一個類繼承 UDF類 3.過載父類中evaluate方法; 4.寫下自己的邏輯 package test; import

ThinkPHP3.2.2定義函式的一些方法

thinkphp中自定義函式的使用方法: 一、將函式放置於系統目錄:ThinkPHP/Common/function.php 下,可直接呼叫; 二、將自定義函式旋轉於系統目錄擴充套件函式檔案:ThinkPHP/Common/extend.php下,呼叫時需要

EXCEL 定義函式的應用(關於 XOR 在 EXCEL 的用法 及 文字型數字求和)

EXCEL 中,能否同調用內建函式一樣在工作表中呼叫自已製作的自定義函式,出現對話方塊.同時也能做到像內建函式對話方塊裡的說明?答案是肯定的,下面舉例說明:題目: ①對文字型一系列數字進行求和(SUM()返回0)              ②對數值型的一系列數字異或操作(EX

Shell指令碼定義函式

在寫程式時,經常會用到函式,一般開發工具擁有豐富的函式庫。但有時還需要根據自己的需要自定義函式滿足我們的需求。 在linux中,寫shell指令碼也一樣,有時會用到自定義函式。 函式,最簡單的定義為:將一組命令集或語句形成一個可用塊,這些塊稱為函式。 1、定義函式的格式:

shell定義函式,返回值

shell中的自定義函式 直接看截圖和程式碼吧,一目瞭然! #!/bin/bash #如下語句會報錯,因為在呼叫test1函式之前要先宣告test1函式 #也就是說,函式的呼叫語句要放在函式的宣告的後面(呼叫函式語句的位置要放在函式宣告語句的位置的後面) #test1

shell定義函式

shell中的自定義函式 自定義函式 基本語法 [ function ] funname[()] { Action; [return int;] } 呼叫直接寫函式名:funname [值] 注意: 1 函式體不能為空,函式體為空會報錯,裡面寫一條語句,比如 echo

Shell程式設計-定義函式shell指令碼除錯

1.自定義函式函式代表著一個或一組命令的集合,表示一個功能模組,常用於模組化程式設計一下是關於函式的重要說明    在shell中,函式必須先定義,再呼叫    使用 return value來獲取函式的返回值    函式在當前shell中執行,可以使用指令碼中的變數函式的格

Loadrunner定義函式指令碼的應用樣例

#include "web_api.h"int SumFour(int a,int b,int c,int d) //自定義四個整型數字求和函式{  if ((a<100) || (a>9000) || (b<100) || (b>9000) || (c<100) || (c&g

shell定義函數

function shell 自定義一個打印函數參數的函數 [root@lynn-04 shell]# vim fun1.sh #!/bin/bash pri(){ echo "第一個參數為 $1" echo "第二個參數為 $2" echo "文件名

shell腳本定義日誌記錄到文件

%d shell fun logging pytho 文件 定義 日誌記錄 gin 自定義日誌函數和前期變量 # adirname - return absolute dirname of given file adirname() { odir=`pwd`; cd

除錯經驗——使用定義函式在Oracle實現類似LISTAGG函式的行轉列(字串連線)功能

問題描述: LISTAGG函式是一個很實用的函式,但僅在Oracle 11.2以後的版本中才有。 生產環境中有個資料庫是Oracle 11.1,需要行轉列,但並不能使用LISTAGG函式。 解決方法: 參考以下文章: https://oracle-base.com/artic

Mysql儲存過程與定義函式的區別

建立儲存過程: CREATE [definer = {user|current_user}] PROCEDURE sp_name ([ proc_parameter [,proc_parameter ...]]) [ characteristi

shell指令碼函式與子shell

shell指令碼中的函式與子shell 原文https://www.jianshu.com/p/7db79d7997b5 函式 函式的使用 bash中也有函式。一個函式就是一個子程式,是用於實現一串操作的程式碼塊。bash中的函式的形式如下: functi

C# winform 定義函式找不到Form的控制元件和定義的全域性變數

今天碰到一個比較狗血的問題,想了很多辦法,最後發現,原來如此的坑。 在新建一個form頁面後,我們在程式碼頁面寫程式碼,往往會寫自定義的方法,一般情況下,在自定義的方法中是可以找到form頁面中的控制元件和自定義的全域性變數, 但是如果我們在自定義的方法前面加了static,那麼坑就出來啦,從此這個方法好

Hive面試題:請寫出你在工作定義過的udf函式,簡述定義步驟

步驟: 1.extends UDF,實現evaluate() 2.add JAR /home/hadoop/hivejar/udf.jar; 3.create temporary function tolowercase as 'com.ghgj.hive.udf.ToLowerCa

pyspark定義函式

由於目前的pyspark不支援dataset,因此只能用dataframe+udf或者rdd的方式來對列進行資料處理。這裡介紹一下udf,udf註冊有兩種方法,一種是呼叫register方法,一種是呼叫udf函式。兩者都能在withColumn和apply中使用

如何在函式計算內部定義 DNS 解析

前言 很多時候為了做程式碼除錯,我們有需求將某個域名所對映的地址臨時對映成其他 IP。 例如我們需要 mock 某個三方服務程式碼的異常情況,我們可能自己構造一個 HTTP server,實現異常程式碼返回,用於函式計算中對該異常的處理。 在本地除錯的環境下,通常我們最直接的做法是修改 /etc/hos

在c語言定義了一個函式,在main呼叫時提示找不到識別符號

解決方案一: 把定義的函式放在,main函式之前。 void f() { printf("Hello"); } main() { f(); } 解決方案二: 在main函式之前宣告。 void f(); main() { f

shell呼叫定義函式及傳參

1 單個引數 #!/bin/bash function LoopPrint() { count=0; while [ $count -lt $1 ] ; do echo $count; let +