一、環境說明
系統: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執行 ./script.shj=9 //全域性變數
function sum()
sum 1 2 3 4 5 #函式呼叫
echo "global j=$j"
echo "global m=$m"
結果為:
引數總共有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中預定義...