พารามิเตอร์ผ่านเชลล์
เราสามารถในการดำเนินงานของเชลล์สคริปต์เพื่อส่งผ่านพารามิเตอร์สคริปต์สคริปต์ใช้พารามิเตอร์ภายในรูปแบบ: $ nn แทนหมายเลข 1 สำหรับการดำเนินการครั้งแรกของพารามิเตอร์สคริปต์ 2 สำหรับพารามิเตอร์ที่สองที่จะรันสคริปต์และอื่น ๆ ththth
ตัวอย่าง
ตัวอย่างต่อไปนี้เราผ่านสามพารามิเตอร์สคริปต์และเอาท์พุทที่ $ 0 เป็นชื่อของไฟล์ที่จะดำเนินการ:
#!/bin/bash # author:本教程 # url:www.w3write.com echo "Shell 传递参数实例!"; echo "执行的文件名:$0"; echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3";
ตั้งค่าสิทธิ์การปฏิบัติการเพื่อสคริปต์และรันสคริปต์เอาท์พุทจะเป็นดังนี้:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3
นอกจากนี้ยังมีตัวแปรหลายที่จะจัดการกับตัวอักษรพิเศษ:
จัดการพารามิเตอร์ | คำอธิบาย |
---|---|
$ # | จำนวนพารามิเตอร์ที่ส่งผ่านไปยังสคริปต์ |
$ * | ในการแสดงสายเดียวพารามิเตอร์ทั้งหมดส่งผ่านไปยังสคริปต์ เช่น "$ *" ด้วย "" "กรณีปิดล้อมรูปแบบของ" $ 1 $ 2 th. $ n "การส่งออกของพารามิเตอร์ทั้งหมด |
$$ | จำนวนกระบวนการ ID ปัจจุบันของสคริปต์ |
$ | สุดท้ายกระบวนการทำงานในหมายเลข ID พื้นหลัง |
$ @ | * $ ด้วยเหมือนกัน แต่เมื่อคุณใช้เครื่องหมายคำพูดและผลตอบแทนแต่ละพารามิเตอร์ในเครื่องหมายคำพูด เช่น "$ @" กับ "" "กรณีปิดล้อมรูปแบบของ" $ 1 "" $ 2 " th. " $ n "การส่งออกของพารามิเตอร์ทั้งหมด |
$ - | เชลล์แสดงตัวเลือกในปัจจุบันการใช้งานและ ตั้งค่าคำสั่ง ฟังก์ชันเดียวกัน |
$? | แสดงสถานะทางออกของคำสั่งสุดท้าย 0 บ่งชี้ว่าไม่มีข้อผิดพลาดและความคุ้มค่าอื่น ๆ ที่แสดงให้เห็นข้อผิดพลาด |
#!/bin/bash # author:本教程 # url:www.w3write.com echo "Shell 传递参数实例!"; echo "第一个参数为:$1"; echo "参数个数为:$#"; echo "传递的参数作为一个字符串显示:$*";
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
$ chmod +x test.sh $ ./test.sh 1 2 3 Shell 传递参数实例! 第一个参数为:1 参数个数为:3 传递的参数作为一个字符串显示:1 2 3
* $ และ $ @ แตกต่าง:
- จุดเดียวกัน: อ้างอิงถึงพารามิเตอร์ทั้งหมด
- แตกต่าง: สะท้อนให้เห็นเฉพาะในราคาคู่ สมมติว่าสคริปต์ที่ทำงานเมื่อเขียนสามพารามิเตอร์ 1,2,3 ,, "*" เทียบเท่ากับ "123" (ผ่านพารามิเตอร์) และ "@" เทียบเท่ากับ "1", "2", " 3 "(ผ่านสามพารามิเตอร์)
#!/bin/bash # author:本教程 # url:www.w3write.com echo "-- \$* 演示 ---" for i in "$*"; do echo $i done echo "-- \$@ 演示 ---" for i in "$@"; do echo $i done
รันสคริปต์เอาท์พุทจะเป็นดังนี้:
$ chmod +x test.sh $ ./test.sh 1 2 3 -- $* 演示 --- 1 2 3 -- $@ 演示 --- 1 2 3