English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell 函数

Linux shell può definire funzioni definite dall'utente e può essere chiamate liberamente nei script di shell.

Il formato di definizione delle funzioni in shell è il seguente:}

[ function ] nomefunzione [()]
{
    azione;
    [return int;]
}

Spiegazione:

  • 1、Può essere definito con function fun()  o direttamente fun() senza parametri.

  • 2、Il valore di ritorno dei parametri può essere visualizzato: return valore di ritorno, se non viene aggiunto, utilizzerà come valore di ritorno l'output dell'ultima comando eseguito. return segue da un numero n (0-255)

Di seguito viene definita e chiamata una funzione:

#!/bin/bash
# author:基础教程网
# url:it.oldtoolbag.com
demoFun(){
    echo "Questo è il mio primo funzione shell!"
}
echo "-----Inizio esecuzione della funzione-----"
demoFun
echo "-----Fine esecuzione della funzione-----"

输出结果:

-----Inizio esecuzione della funzione-----
Questo è il mio primo funzione shell!
-----Fine esecuzione della funzione-----

Di seguito viene definita una funzione con la语句return:

#!/bin/bash
# author:基础教程网
# url:it.oldtoolbag.com
funWithReturn(){
    echo "Questa funzione aggiungerà i due numeri inseriti..."
    echo "Inserisci il primo numero: "
    read aNum
    echo "Inserisci il secondo numero: "
    read anotherNum
    echo "I due numeri sono rispettivamente $aNum e $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "La somma dei due numeri inseriti è $? !"

L'output sarà simile al seguente:

Questa funzione aggiungerà i due numeri inseriti...
Inserisci il primo numero: 
1
Inserisci il secondo numero: 
2
I due numeri sono rispettivamente 1 e 2 !
La somma dei due numeri inseriti è 3 !

Il valore di ritorno della funzione può essere ottenuto tramite $? dopo la chiamata della funzione.

Attenzione: tutte le funzioni devono essere definite prima di essere utilizzate. Questo significa che devono essere collocate nella parte iniziale dello script, fino a quando l'interprete di shell non le rileva per la prima volta, quando possono essere utilizzate. La chiamata della funzione utilizza solo il nome della funzione.

Parametri della funzione

In Shell, quando si chiama una funzione, è possibile passargli parametri. All'interno del corpo della funzione, è possibile ottenere il valore dei parametri tramite la forma $n, ad esempio, $1 rappresenta il primo parametro, $2 rappresenta il secondo parametro...

Esempio di funzione con parametri:

#!/bin/bash
# author:基础教程网
# url:it.oldtoolbag.com
funWithParam(){
    echo "Il primo parametro è $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

输出结果:

第一个参数为 1 !
第二个参数为 2 !
第十个参数为 10 !
第十个参数为 34 !
第十一个参数为 73 !
参数总数有 11 个!
作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !

注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。

另外,还有几个特殊字符用来处理参数:

参数处理 说明
$# 传递到脚本或函数的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。