shell 指令碼 函式的高階使用

2021-09-29 20:35:45 字數 2526 閱讀 1184

函式兩種命名格式 如下,第一種是帶()  第二種是不帶()的

第一種小括號的

函式名()

第一種不帶小括號的

function 函式名

函式的傳遞引數

int example_1(int arg1,int arg2) 

舉例

int num1=10;

int num2=20;

函式呼叫形式一:int num3=example_1(num1,num2);

函式呼叫形式二:int num4;

num4=example_1(num1,num2);

shell中傳參

function name

#呼叫方式

name lily allen

編寫 calcut.sh 內容如下:

#!/bin/bash

function calcu

calcu $1 $2 $3

執行  ./calcut.sh 11 + 22 結果如下

~:$ ./calcut.sh 11 + 22

33

函式的返回值

使用return返回值的時候 只能返回 1-255的整數

函式使用return返回值,通常只是用來提供其它地方呼叫獲取狀態,因此通常僅返回0或者1;0標示成功,1標示失敗.

使用echo可以返回任何字串結果.

通常用於返回資料,比如乙個字串或者列表值

函式的返回方式

方法一 return

方法二 echo

示例 編寫 getuser.sh  查詢使用者列表

#!/bin/bash

function get_user

user_list=`get_user` #將函式變成結果集使用

for u in $user_list

do echo $u

done

執行 結果

~$ ./getuser.sh 

root

daemon

binsys

sync

games

manlp

mail

news

uucp

proxy

sshd

.....

區域性變數和全域性變數

不做特殊說明,shell中的變數都是全域性變數 ,建議在大型指令碼程式函式中,慎用全域性變數

定義區域性變數

定義區域性變數時,使用local關鍵字

函式內和外部若存在同名變數,則函式內部變數覆蓋外部變數

示例 編寫 test.s**件

#!/bin/bash

var1="hello world"

function test

test

echo $var1

執行 結果

~$ ./test.sh 

87hello world

函式庫:

定義乙個函式庫,該函式庫實現以下幾個函式:

使用方法

假如編寫 myfunction.sh 裡面包含的都是 各種function

那我們想使用myfunction.sh的時候 直接 可以使用

#!/bin/bash

. myfunction

# 可以直接使用 myfunction.sh 中的函式

經驗之談

1.庫檔案的字尾是任意的,但一般使用 .lib

2.庫檔案通常沒有執行選項

3.庫檔案無需和指令碼同級目錄,只需在指令碼中引用時指定

4.第一行一般使用#!/bin/echo,輸出警告資訊,避免使用者執行

shell指令碼 函式的使用

bin bash 函式入門 function test test注意 呼叫函式的時候,直接函式名呼叫即可 寫乙個接收兩個數字引數的函式,計算和並輸出結果 bin bash 接收兩個引數,求和,並輸出結果 function add add 10 20第乙個指令碼 test func filemd5.s...

shell指令碼高階

接著上篇部落格,今天整理一下關於條件測試和條件語句方面的知識。在編寫shell指令碼時,經常需要對一些條件進行判斷,可以使用測試命令test輔助完成測試過程。test命令測試特定的表示式是否成立,當條件成立時,命令執行後的返回值為0,否則為其他數值。條件測試的基本格式有 格式1 test expre...

shell指令碼高階

流程控制 程式設計中的邏輯處理 順序執行 選擇執行 迴圈執行 迴圈 迴圈執行 將某 段重複執行多次 重複執行多少次 迴圈次數事先已知 迴圈次數事先未知 有進入條件和退出條件 for,while,until for迴圈 for 變數名 in 列表 do 迴圈體done 執行機制 依次將列表中的元素賦值...