1. 程式人生 > >shell自定義函式

shell自定義函式

轉載地址:https://www.cnblogs.com/oxspirt/p/7246075.html

“sum=$(fsum 2 5)”這種方式,是將標準輸出(echo 出來的東子)傳遞給主程式的變數而不是返回值

12345678910111213141516#!/bin/bashfunction sum(){val1=$1val2=$2val3=$(($1+$2))echo $val3}#Call function with 2 parameters and it return 1 parameter.ret_val=$(sum 10 20)echo $ret_val

  指令碼執行結果: ret_val = $(sum 10 20)  將sum 10 20 的輸出傳遞給變數ret_val

123456789101112#!/bin/bashprod=1twoPow(){for((i=0;i<$1;i++));doprod=$(($prod*2))done}echo "Enter a number"read numtwoPow $numecho $prod

  執行指令碼 c.sh

123456789101112131415#!/bin/bashtwoPow(){prod=1for((i=0;i<$1;i++));doprod=$(($prod*2))donereturn $prod}echo "Enter a number"read numtwoPow num

  

----------------------------------------------------------------------------------------------------------------------------------

Shell的函式在使用之前必須先定義,定義格式:

12345[ function ] funname [()]{action;[return int;]}
  • 可以帶function fun()定義,也可以直接fun() 定義,不帶任何引數。
  • 引數返回,可以顯示加:return 返回,如果不加,將以最後一條命令執行結果,作為返回值。 return後跟數值n(0-255)

示例

12345678910fsum 2 5fsum(){echo $1,$2return $1+$2}sum=$(fsum 2 5)echo $?echo "sum=$sum"

執行輸出:

fsum: not found
7
sum=2,5

從上面這個例子我們可以得到幾點結論:

  • 必須在呼叫函式地方之前,宣告函式,shell指令碼是逐行執行,這點和編譯型語言不通。
  • 函式返回值,只能通過$? 系統變數獲得,而“sum=$(fsum 2 5)”這種方式,是將標準輸出傳遞給主程式的變數,而不是返回值!

Shell函式可以在指令碼檔案中使用之前定義它,也可以把函式定義在一個獨立的檔案使用點號(.)命令來引用它。如function.sh和testshell.sh在同一目錄中,function.sh

1234fsum(){echo $1,$2return $(($1+$2))}

testshell.sh

123#! /bin/sh. ./function.shfsum 

相關推薦

linux shell 定義函式(定義、返回值、變數作用域)介紹

inux shell 可以使用者定義函式,然後在shell指令碼中可以隨便呼叫。下面說說它的定義方法,以及呼叫需要注意那些事項。 一、定義shell函式(define function) 語法: [ function ] funname [()] {     act

shell 定義函式

#定義一個數組 my_array[0]=-pc #遍歷陣列 for i in ${my_array[*]} do #如果第一個函式入參在陣列中並且第二個函式入參為2 if [ $1 = $i -a $2 -eq 2 ] then return 0

shell定義函式

轉載地址:https://www.cnblogs.com/oxspirt/p/7246075.html“sum=$(fsum 2 5)”這種方式,是將標準輸出(echo 出來的東子)傳遞給主程式的變數,而不是返回值!12345678910111213141516#!/bin/

shell中的定義函式,返回值

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

shell中的定義函式

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

shell呼叫定義函式及傳參

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

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

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

Shell指令碼中的定義函式

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

轉 linux shell定義函數(定義、返回值、變量作用域)介紹

shel 自己 lai cell define ber article clas ner linux shell 可以用戶定義函數,然後在shell腳本中可以隨便調用。下面說說它的定義方法,以及調用需要註意那些事項。 一、定義shell函數(define function)

shell-定義rm

創建 files delete class 用戶 文件 don 隱藏 you <<COMMENT 功能介紹: 1.刪除操作執行前先獲取文件或目錄的大小,然後對比系統中的磁盤空間 2.如果有多余空間,則創建對應的隱藏目錄,並備份 3.如果沒有足夠的空間,可以提醒

Oracle資料庫定義函式練習

--測試函式3 CREATE OR REPLACE FUNCTION FN_TEST3 (NUM IN VARCHAR2) RETURN VARCHAR2 IS TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300); NUMARR VARCHAR2_ARR; TEMPN

除錯經驗——如何檢視Oracle定義函式 (How to view definition of user defined functions in Oracle)

問題描述: 現有的Query中似乎使用了一個自定義函式String_to_list,為了排查問題,需要檢視這個函式的定義。 方法:   --新建的function,並未儲存在All_ojbects表中,而是儲存在user_objects表中 SELECT * FRO

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

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

MySQL的sql定義函式

SQL強大的一個原因就是函式豐富,MYSQL為例,函式有以下幾種: 數學函式 字串函式 日期和時間函式 條件判斷函式 系統資訊函式 加密函式 格式化函式 同時,MYSQL也支援自定義函式,這篇文章分為兩個部分,限於篇幅,第一個部分介紹常用函式,第二部分講解如何自定義函式。 原生函式

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

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

javaweb之EL定義函式

1.什麼是EL自定義函式 EL自定義函式是在EL表示式中呼叫的某個java類的靜態方法,這個靜態方法需在web應用程式中進行配置才可以被EL表示式呼叫。EL自定義函式可以擴充套件EL表示式的功能,讓EL表示式完成普通java程式程式碼所能完成的功能。 2.EL自定義函式開發步驟 編寫EL自定義函式

【C語言】字串處理定義函式

1、字串求長度 #include <stdio.h> int Mystrlen1(const char *str) { int i=0; while(*(str++)!='\0') { i++; } return i; } int Mystrlen2(cons

python 定義函式表示式 擬合求係數

https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html  import numpy as npimport matplotlib.pyplot as pltfrom scipy.optim

MS SQL定義函式IsNumeric

判斷字串是否為純數字,負數不算。如'00012','54585','1000'   SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[svf_IsNumeric]

MySQL定義函式遞迴查詢

用於遞迴查詢Id(通過parentId關聯)引數為int 型別的值: CREATE DEFINER=`root`@`%` FUNCTION `getChildList`(rootId INT) RETURNS text CHARSET utf8 BEGIN DECLARE sTemp