บทช่วยสอน ฟังก์ชั่นเชลล์ ที่ดีที่สุดในปี 2024 ในบทช่วยสอนนี้ คุณสามารถเรียนรู้ อาร์กิวเมนต์ของฟังก์ชัน,
Linux Shell สามารถเป็นฟังก์ชั่นที่ผู้ใช้กำหนดแล้วคุณสามารถโทรหาได้ง่ายในเชลล์สคริปต์
นิยามรูปแบบฟังก์ชั่นเปลือกดังนี้
[ function ] funname [()] { action; [return int;] }
คำอธิบาย:
ตัวอย่างต่อไปนี้กำหนดฟังก์ชั่นและการโทร:
#!/bin/bash # author:本教程 # url:www.w3write.com demoFun(){ echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" demoFun echo "-----函数执行完毕-----"
เอาท์พุท:
-----函数开始执行----- 这是我的第一个 shell 函数! -----函数执行完毕-----
นิยามของคำว่าฟังก์ชั่นที่มีคำสั่งกลับ:
#!/bin/bash # author:本教程 # url:www.w3write.com funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算th." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum)) } funWithReturn echo "输入的两个数字之和为 $? !"
ผลลัพธ์ที่คล้ายกับต่อไปนี้:
这个函数会对输入的两个数字进行相加运算th. 输入第一个数字: 1 输入第二个数字: 2 两个数字分别为 1 和 2 ! 输入的两个数字之和为 3 !
ค่าตอบแทนการทำงานหลังจากเรียกฟังก์ชั่นนี้ผ่าน $? จะได้รับ
หมายเหตุ: ฟังก์ชั่นทุกคนจะต้องกำหนดก่อนการใช้งาน ซึ่งหมายความว่าการทำงานจะต้องอยู่ในจุดเริ่มต้นของสคริปต์จนล่ามเปลือกเมื่อมันถูกค้นพบครั้งแรกก็สามารถนำมาใช้ เรียกใช้ฟังก์ชันโดยใช้เพียงชื่อฟังก์ชั่น
ในกะลาคุณสามารถส่งผ่านพารามิเตอร์ที่ฟังก์ชั่นที่เรียกว่า ในร่างกายของฟังก์ชั่นภายในที่จะได้รับค่าของพารามิเตอร์ในรูปแบบของ $ n เป็นเช่น, $ 1 สำหรับอาร์กิวเมนต์แรก, $ 2 พารามิเตอร์ที่สอง th.
ฟังก์ชั่นเช่นกับพารามิเตอร์:
#!/bin/bash # author:本教程 # url:www.w3write.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
เอาท์พุท:
第一个参数为 1 ! 第二个参数为 2 ! 第十个参数为 10 ! 第十个参数为 34 ! 第十一个参数为 73 ! 参数总数有 11 个! 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
โปรดทราบว่า $ 10 ไม่สามารถได้รับค่าพารามิเตอร์ที่สิบได้รับพารามิเตอร์สิบต้อง $ {10} เมื่อ n> = 10 คุณจะต้องใช้ $ {n} ที่จะได้รับค่าพารามิเตอร์
นอกจากนี้ยังมีตัวแปรหลายที่จะจัดการกับตัวอักษรพิเศษ:
จัดการพารามิเตอร์ | คำอธิบาย |
---|---|
$ # | จำนวนพารามิเตอร์ที่ส่งผ่านไปยังสคริปต์ |
$ * | ในการแสดงสายเดียวพารามิเตอร์ทั้งหมดส่งผ่านไปยังสคริปต์ |
$$ | จำนวนกระบวนการ ID ปัจจุบันของสคริปต์ |
$ | สุดท้ายกระบวนการทำงานในหมายเลข ID พื้นหลัง |
$ @ | * $ ด้วยเหมือนกัน แต่เมื่อคุณใช้เครื่องหมายคำพูดและผลตอบแทนแต่ละพารามิเตอร์ในเครื่องหมายคำพูด |
$ - | เชลล์แสดงตัวเลือกในปัจจุบันการใช้คำสั่งฟังก์ชั่นชุดเดียวกัน |
$? | แสดงสถานะทางออกของคำสั่งสุดท้าย 0 บ่งชี้ว่าไม่มีข้อผิดพลาดและความคุ้มค่าอื่น ๆ ที่แสดงให้เห็นข้อผิดพลาด |