Shell 函數 和 Shell echo命令 和 test命令

來源:互聯網
上載者:User

linux shell 可以使用者定義函數,然後在shell指令碼中可以隨便調用。

shell中函數的定義格式如下:

[ function ] funname [()]{    action;    [return int;]}

說明:

1、可以帶function fun() 定義,也可以直接fun() 定義,不帶任何參數。


2、參數返回,可以顯示加:return 返回,如果不加,將以最後一條命令運行結果,作為傳回值。 return後跟數值n(0-255

下面的例子定義了一個函數並進行調用:

#!/bin/bashdemoFun(){    echo "This is your first shell function!"}echo "Function begin..."helloecho "Function end!"

輸出結果:

Function begin...This is your first shell function!Function end!

下面定義一個帶有return語句的函數:

#!/bin/bashfunWithReturn(){    echo "The function is to get the sum of two numbers..."    echo -n "Input first number: "    read aNum    echo -n "Input another number: "    read anotherNum    echo "The two numbers are $aNum and $anotherNum !"    return $(($aNum+$anotherNum))}funWithReturnecho "The sum of two numbers is $? !"

輸出類似下面:

The function is to get the sum of two numbers...Input first number: 25Input another number: 50The two numbers are 25 and 50 !The sum of two numbers is 75 !

函數傳回值在調用該函數後通過 $? 來獲得。

注意:所有函數在使用前必須定義。這意味著必須將函數放在指令碼開始部分,直至shell解譯器首次發現它時,才可以使用。調用函數僅使用其函數名即可。 函數參數

在Shell中,調用函數時可以向其傳遞參數。在函數體內部,通過 $n 的形式來擷取參數的值,例如,$1表示第一個參數,$2表示第二個參數...

帶參數的函數樣本:

#!/bin/bashfunWithParam(){    echo "The value of the first parameter is $1 !"    echo "The value of the second parameter is $2 !"    echo "The value of the tenth parameter is $10 !"    echo "The value of the tenth parameter is ${10} !"    echo "The value of the eleventh parameter is ${11} !"    echo "The amount of the parameters is $# !"    echo "The string of the parameters is $* !"}funWithParam 1 2 3 4 5 6 7 8 9 34 73

輸出結果:

The value of the first parameter is 1 !The value of the second parameter is 2 !The value of the tenth parameter is 10 !The value of the tenth parameter is 34 !The value of the eleventh parameter is 73 !The amount of the parameters is 12 !The string of the parameters is 1 2 3 4 5 6 7 8 9 34 73 !"

注意,$10 不能擷取第十個參數,擷取第十個參數需要${10}。當n>=10時,需要使用${n}來擷取參數。

另外,還有幾個特殊字元用來處理參數:

參數處理 說明
$# 傳遞到指令碼的參數個數
$* 以一個單字串顯示所有向指令碼傳遞的參數
$$ 指令碼啟動並執行當前進程ID號
$! 後台啟動並執行最後一個進程的ID號
$@ 與$#相同,但是使用時加引號,並在引號中返回每個參數。
$- 顯示Shell使用的當前選項,與set命令功能相同。
$? 顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。






Shell 的 echo 指令與 PHP 的 echo 指令類似,都是用於字串的輸出。命令格式:

echo string

您可以使用echo實現更複雜的輸出格式控制。 1.顯示一般字元串:

  echo "It is a test"

這裡的雙引號完全可以省略,以下命令與上面執行個體效果一致:

  echo It is a test
2.顯示逸出字元
  echo "\"It is a test\""

結果將是:

  "It is a test"

同樣,雙引號也可以省略 3.顯示變數

read 命令從標準輸入中讀取一行,並把輸入行的每個欄位的值指定給 shell 變數

  #!/bin/sh  read name   echo "$name It is a test"

以上代碼儲存為 test.sh,name 接收標準輸入的變數,結果將是:

[root@www ~]# sh test.shOK                     #標準輸入OK It is a test        #輸出
4.顯示換行
  echo "It it a test"

輸出結果:

OK!It it a test
5.顯示不換行
#!/bin/shecho "It is a test"

輸出結果:

OK! It is a test
6.顯示結果定向至檔案
  echo "It is a test" > myfile
7.原樣輸出字串,不進行轉義或取變數(用單引號)
  echo '$name\"'

輸出結果:

  $name\"
8.顯示命令執行結果
  echo `date`

結果將顯示當前日期

  Thu Jul 24 10:08:46 CST 2014




Shell中的 test 命令用於檢查某個條件是否成立,它可以進行數值、字元和檔案三個方面的測試。 數值測試

參數 說明
-eq 等於則為真
-ne 不等於則為真
-gt 大於則為真
-ge 大於等於則為真
-lt 小於則為真
-le 小於等於則為真

執行個體示範:

num1=100num2=100if test $[num1] -eq $[num2]then    echo 'The two numbers are equal!'else    echo 'The two numbers are not equal!'fi

輸出結果:

The two numbers are equal!
字串測試
參數 說明
= 等於則為真
!= 不相等則為真
-z 字串 字串長度偽則為真
-n 字串 字串長度不偽則為真
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.