Shell中的函式與變數

2021-09-10 21:15:24 字數 1989 閱讀 5909

方法1:

函式名()

方法2:

function 函式名()

#!/bin/bash

function fun1()

fun1 ##呼叫函式

[root@server ~]# cat function.sh 

#!/bin/bash

function fun1()

count=1

while [ $count -le 5 ]

do fun1

count=$[ $count + 1 ]

done

echo "end of loop"

fun1

echo "end of script"

[root@server ~]# sh function.sh

i am a boy~

i am a boy~

i am a boy~

i am a boy~

i am a boy~

end of loop

i am a boy~

end of script

1)預設退出狀態碼:預設情況下,函式的退出狀態碼是函式中最後一條命令返回的退出狀態碼

2)使用return命令

shell使用return命令來退出函式並返回特定的退出狀態碼

[root@server ~]# cat return.sh 

#!/bin/bash

function db1()

db1echo "the new value is $?"

[root@server ~]# sh return.sh

enter a value:6

doubling the value...

the new value is 12

函式名必須是唯一的,如果重新定義了函式,新的函式會覆蓋舊的函式

函式不能直接從命令列獲取指令碼的引數值

將函式的輸出儲存在shell變數中,可以獲得任何型別的函式輸出,並將其儲存到變數中

可以向函式中傳遞引數函式名會在$0變數中定義,函式命令列上的任何引數都會通過$1,2定義

,2定義,

2定義,

#來判斷傳給函式的引數數目

全域性變數: 任何地方都生效的變數,預設情況下,指令碼主體內定義全域性變數,函式內可以用,函式外也可以用

[root@server ~]# vim overall.sh 

#!/bin/bash

function fun1()

temp=4

value=6

fun1

echo "the result is $result"

if [ $temp -gt $value ];then

echo "temp is larger"

else

echo "temp is smaller"

fi[root@server ~]# sh overall.sh

the result is 22

temp is larger

區域性變數定義方法: local value

[root@server ~]# vim local.sh 

#!/bin/bash

function fun1()

temp=4

value=6

fun1

echo "the result is $result"

if [ $temp -gt $value ];then

echo "temp is larger"

else

echo "temp is smaller"

fi[root@server ~]# sh local.sh

the result is 22

temp is smaller

shell 函式與內建變數

傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...

shell 函式與內建變數

傳遞到指令碼的引數個數 以乙個單字串顯示所有向指令碼傳遞的引數 指令碼執行的當前程序id號 後台執行的最後乙個程序的id號 與 相同,但是使用時加引號,並在引號中返回每個引數。顯示shell使用的當前選項,與set命令功能相同。顯示最後命令的退出狀態。0表示沒有錯誤,其他任何值表明有錯誤。顯示傳參的...

shell中變數的變數與eval命令

shell 中經常會用到變數的巢狀的情況。比如,單個或多個變數的值作為變數名,再對該變數名取 獲取其內部的變數的情況,這種指令碼寫起來很難搞,還好有eval 命令方便我們處理這種情況。便於理解,先來乙個示例 bin bash a my b site my site my site www.361wa...