المعلمات مرور قذيفة
يمكننا في تنفيذ البرنامج النصي شل لتمرير المعلمات إلى السيناريو، والسيناريو يأخذ المعلمات داخلشكل: $ ن.n تمثل عدد (1)، لتنفيذ أول من المعلمة النصي، 2 للمعلمة الثانية لتنفيذ البرنامج النصي، وهلم جرا ......
أمثلة
الأمثلة التالية نعبر ثلاث معلمات للنص، والمخرجات، حيث $ 0 هو اسم الملف لتنفيذ:
#!/bin/bash # author:本教程 # url:www.w3big.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 ... $ ن "إخراج جميع المعلمات. |
$$ | رقم معرف العملية الحالية من البرنامج النصي يعمل |
$! | أخيرا، وهي عملية تعمل في الخلفية رقم |
$ @ | * $ مع نفسه، ولكن عند استخدام علامات الاقتباس، وإرجاع كل معلمة في الاقتباس. مثل "$ @" مع "" "حالة المغلقة، شكل" $ 1 "" $ 2 "..." $ ن "إخراج جميع المعلمات. |
$ - | يعرض قذيفة الخيار الحالي للاستخدام، و تعيين الأمر نفس الوظيفة. |
$؟ | يعرض حالة خروج من الأمر الأخير. 0 يدل على عدم وجود أخطاء، وأي قيمة أخرى تشير إلى وجود خطأ. |
#!/bin/bash # author:本教程 # url:www.w3big.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.w3big.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