Latest web development tutorials

fungsi shell

linux shell dapat fungsi user-defined, maka Anda dapat dengan mudah memanggil skrip shell.

Definisi Format fungsi shell sebagai berikut:

[ function ] funname [()]

{

    action;

    [return int;]

}

penjelasan:

  • 1, dapat mengambil fungsi menyenangkan () didefinisikan untuk menjadi menyenangkan langsung () didefinisikan, tanpa parameter apapun.
  • 2, parameter kembali dapat ditampilkan ditambah: pulang kembali, jika tidak, hasilnya akan menjadi yang terakhir perintah dijalankan, sebagai nilai kembali. diikuti oleh nilai kembali dari n (0-255

Contoh berikut mendefinisikan fungsi dan panggilan:

#!/bin/bash
# author:本教程
# url:www.w3big.com

demoFun(){
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

Output:

-----函数开始执行-----
这是我的第一个 shell 函数!
-----函数执行完毕-----

Berikut definisi dari fungsi dengan pernyataan kembali:

#!/bin/bash
# author:本教程
# url:www.w3big.com

funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"

Output yang mirip dengan berikut:

这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
1
输入第二个数字: 
2
两个数字分别为 1 和 2 !
输入的两个数字之和为 3 !

nilai kembali fungsi setelah memanggil fungsi ini melalui $? Apakah diperoleh.

Catatan: Semua fungsi harus didefinisikan sebelum digunakan. Ini berarti bahwa fungsi harus ditempatkan pada awal script sampai interpreter shell ketika pertama kali ditemukan, dapat digunakan. Memanggil fungsi hanya menggunakan nama fungsinya.


Argumen fungsi

Di Shell, Anda bisa memberikan parameter yang fungsi ini dipanggil. Dalam fungsi tubuh dalam, untuk mendapatkan nilai parameter dalam bentuk $ n, misalnya, $ 1 untuk argumen pertama, $ 2 untuk parameter kedua ...

Fungsi contoh dengan parameter:

#!/bin/bash
# author:本教程
# url:www.w3big.com

funWithParam(){
    echo "第一个参数为 $1 !"
    echo "第二个参数为 $2 !"
    echo "第十个参数为 $10 !"
    echo "第十个参数为 ${10} !"
    echo "第十一个参数为 ${11} !"
    echo "参数总数有 $# 个!"
    echo "作为一个字符串输出所有参数 $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73

Output:

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

Perhatikan bahwa $ 10 tidak bisa mendapatkan parameter kesepuluh, mendapatkan parameter kesepuluh perlu $ {10}. Ketika n> = 10, Anda perlu menggunakan $ {n} untuk mendapatkan parameter.

Selain itu, ada beberapa parameter untuk menangani karakter khusus:

penanganan parameter penjelasan
$ # Jumlah parameter yang dikirimkan ke script
$ * Dalam menampilkan string tunggal semua parameter yang dikirimkan ke script
$$ Saat ini nomor proses ID dari script berjalan
$! Akhirnya, proses yang berjalan di ID latar belakang nomor
$ @ * $ Dengan sama, tetapi ketika Anda menggunakan tanda kutip, dan mengembalikan setiap parameter dalam tanda kutip.
$ - Shell menampilkan pilihan saat ini untuk menggunakan perintah fungsi set sama.
$? Menampilkan status keluar dari perintah terakhir. 0 menunjukkan tidak ada kesalahan, dan nilai lain menunjukkan kesalahan.