Linux shell函式使用

2021-09-24 10:36:04 字數 1631 閱讀 4539

一、環境說明

系統:ubuntu12.04tls

bash版本:gnu bash, 版本 4.2.25(1)-release (x86_64-pc-linux-gnu)

二、函式定義結構

[function] function_name()

關鍵字function可以省略

三、函式呼叫方式

function_name arg1 arg2 arg3 ....
說明:

(1)shell指令碼是順序解釋執行的,所以使用前需要定義。函式要在使用前定義。

函式名可以和系統中的命令重複,shell解釋時首先在shell檔案中查詢,找到就執行,否則根據            path路徑去查詢系統命令

函式只在當前shell中起作用,不輸出到子shell中

(2)函式中引數的使用

<1>$0, $1,......$n 表示命令行引數

$0表示函式名字

$1表示arg1

$2表示arg2

這個和c語言main函式char *ar**相似,ar**[0]表示程式名,ar**[1]表示第乙個引數...

<2> $#    命令列引數個數(不包含函式名/檔名)

$?    前乙個命令的退出狀態

$$     正在執行程序的id

$@    包含所有命令列引數「$1,$2,....」, 單獨引用

$*      包含所有命令列引數「$1,$2,.....」, 整體引用

(3)變數

全域性變數:在指令碼的其他任何地方都能夠訪問該變數,預設宣告的變數都是全域性變數。

區域性變數:只能在宣告變數的作用域內訪問。使用 local 關鍵字宣告區域性變數。

(4)函式返回值

<1>不指定返回值,則返回值為函式中最後一條命令執行的結果

<2>顯示使用return 返回0 - 255

四、除錯

(1)只做語法檢測,不執行指令碼

bash -n ./script_name.sh
(2)啟動除錯

bash -x ./script_name.sh
(3)區域性除錯

修改指令碼,將要除錯的部分用set -x 和set +x包裹起來

set -x 

...command

...set +x

五、例項

#!/bin/bash

j=9 //全域性變數

function sum()

sum 1 2 3 4 5 #函式呼叫

echo "global j=$j"

echo "global m=$m"

執行 ./script.sh

結果為:

引數總共有5個

函式名為:./test.sh

引數:1

引數:2

引數:3

引數:4

引數:5

pid=8633

in func j=9

local j=8

global j=9

global m=10

linux shell使用經驗

今天突然對python心血來潮,網上搜了篇學習筆記在看。ubuntu中練習了一下,無意中注意到乙個關於shell語言的基本通用規則。剛開始學習bash的時候也注意到了,最簡單的bash程式一般也會有三行 bin bash this is a bash test program test.sh ech...

linux shell陣列使用

摘自 陣列的定義與賦值 1 array value1 valuen 此時下標從0開始 一對括號表示是陣列,陣列元素用 空格 符號分割開。2 array index value 直接通過 陣列名 下標 就可以對其進行引用賦值,如果下標不存在,自動新增新乙個陣列元素 獲取陣列內容 得到第二個元素。得到所...

Linux Shell變數使用

一 本地變數的使用 本地變數就如同區域性變數一樣,只在本shell中起作用。它不會影響到其他shell中的變數。1。顯示變數值 可以使用echo命令。需要注意的是,使用變數的時候必須在變數名前加上 符號 2。清除變數 使用unset命令可以清除命令。3。顯示所有本地shell變數 shell中預定義...