006 shell函數

一、自定義函數

1、基本語法

[ function ] funname[()]

{

    Action;

    [return int;]

}

funname

#!/bin/bash
function aaa()
{
    echo aaa
}
aaa;

#結果
chmod +x fun.sh
./fun.sh
aaa

也可以寫成這樣:省略function和()其中一個,不能兩個同時省略。

(1)省略()

#!/bin/bash
function aaa
{
    echo aaa
}
aaa;

#結果
./fun.sh
aaa

(2)省略function

#!/bin/bash
aaa()
{
    echo aaa
}
aaa;

#結果
./fun.sh
aaa

(3)求兩個數的和:

#在命令行輸入
plus()
> {
> echo $[$1+$2]
> }

#調用
plus 1 2
3

(4)判斷參數個數:

#命令行輸入
plus()
> {
> if [ $# -lt 2 ]
> then 
> echo "參數不足2個"
> exit
> else
> echo $[$1+$2]
> fi
> }

#調用
plus 22 33
55

#直接退出當前連接
plus 22
參數不足2個
logout
Connection closing...Socket close.

Connection closed by foreign host.

注意事項:

(1)shell腳本就是多條命令行的集合,逐行運行。也就是說,shell腳本中的內容是可以在命令行輸入執行的。函數必須先定義,並且放在調用語句之前,才能正常執行。先聲明,後調用

(2)定義函數時,()不能有參數。參數是在調用時指定。

2、返回值

函數返回值,返回函數執行狀態,不能返回結果。只能通過$?系統變量獲得,可以顯示加return返回。如果不加,則以最後一條命令的運行結果,作爲返回值。return後跟數值n(0~255)

使用$?獲取函數返回值:

aaa()
> {
> echo aaa
> return 2
> }

結果:

aaa
aaa

echo $?
2

如果返回不在0~255的數,會怎樣:

aaa() { echo aaa; return 999999; }

#結果
aaa
aaa

echo $?
63

二、shell 系統函數

1、basename

基本語法

basename [string / pathname] [suffix]

功能描述:basename以 / 做分隔符,獲取最後一個分割的字符串。如果指定了後綴,則後綴將會從最後一個字符串中去掉。

#獲取文件名及後綴
basename /root/a.sh
a.sh

basename /root/a.sh  sh
a.

#獲取文件名
basename /root/a.sh  .sh
a

#後綴與最後一個分割的字符串相同,後綴不起作用
basename /root/a.sh  a.sh

2、dirname

基本語法

dirname 文件或者目錄絕對路徑

功能描述:獲取文件或者目錄完整路徑,去掉文件名或者目錄

dirname /root/a.sh
/root

#hello是一個文件
#-rw-r--r-- 1 root root    0 Mar 22 12:56 hello
dirname /usr/local/bin/hello
/usr/local/bin

#a是一個目錄
#drwxr-xr-x 2 root root 4096 Mar 22 12:57 a
dirname /usr/local/bin/a
/usr/local/bin
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章