1. 程式人生 > >shell中的自定義函式,返回值

shell中的自定義函式,返回值

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(具體是哪個數,由命令自己來決定),則證明上一個命令執行不正確了)