shell中的自定義函式,返回值
阿新 • • 發佈:2018-12-08
shell中的自定義函式
直接看截圖和程式碼吧,一目瞭然!
#!/bin/bash #如下語句會報錯,因為在呼叫test1函式之前要先宣告test1函式 #也就是說,函式的呼叫語句要放在函式的宣告的後面(呼叫函式語句的位置要放在函式宣告語句的位置的後面) #test1 20 30 function test1() { echo $1和$2 return $(($1+$2)) } test1 50 70 #將命令的結果賦給變數total total=$(test1 10 66) #echo "執行命令的結果是$total" #函式返回值,只能通過$?系統變數獲得,直接通過=,獲得是空值,可以把函式理解成一個命令 #在shell中獲得命令返回值,都需要通過$?獲得 #echo $? echo $total,$? echo "執行命令的結果是$total" :<<! 我這裡是多行註釋 將命令的執行結果賦給變數,有2種寫法,如下 1)A=`ls -la` 反引號,執行裡面的命令,並把結果返回給變數 A 2)A=$(ls -la) ! function test2() { echo "江西省贛州市於都縣" } #將命令的結果賦給變數,舉例子,如下: MESSAGE=$(test2) echo "執行命令的結果是$MESSAGE" function test3() { dirname /root/shell/bbb.txt } #將命令的結果賦給變數,舉例子,如下: MESSAGE2=`test3` echo "執行命令的結果是$MESSAGE2"
總結:
1 必須在呼叫函式地方之前,宣告函式,shell指令碼是逐行執行,不會像其它語言一樣先預編譯一次,必須在使用函式前先宣告函式
2 total=$(fSum 3 2); 通過這種呼叫方法,我們清楚知道,在shell 中 單括號裡面,可以是:命令語句。 因此,我們可以將shell中函式,看作是定義一個新的命令,它是命令,因此 各個輸入引數直接用 空格分隔。 一次,命令裡面獲得引數方法可以通過:$0…$n得到。 $0代表函式本身
給大家回顧一下以前的知識,將命令的執行結果賦給變數,看我這篇文章也可以
如下圖:
將命令的返回值賦給變數(重點)
2種寫法
1)A=`ls -la` 反引號,執行裡面的命令,並把結果返回給變數 A
2)A=$(ls -la)
3 函式返回值,只能通過$? 系統變數獲得,直接通過=,獲得是空值。其實,我們按照上面一條理解,知道函式是一個命令,在shell獲得命令返回值,都需要通過$?獲得
如果不知道$?是什麼,那就回顧一下以前的知識,看我這篇文章也可以
預定義變數
基本介紹
就是 shell 設計者事先已經定義好的變數,可以直接在 shell 指令碼中使用
基本語法
$$ (功能描述:當前程序的程序號(PID))
$! (功能描述:後臺執行的最後一個程序的程序號(PID))
$? (功能描述:最後一次執行的命令的返回狀態。如果這個變數的值為 0,證明上一個命令正確執行;如果這個變數的值為非 0(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了)