کاربران غالباً نیاز دارند تا برای یک اسکریپت خاص یکسری پارامترهای ورودی درنظر بگیرند که از جملهٔ این پارامترها میتوان به نام فایل، تاریخ و … اشاره کرد. جالب است بدانیم که نوع این پارامترهای ورودی هم میتوانند عددی باشند و هم چیزی همچون یک فایل:
$ ./script.sh /tmp
$ ./script.sh 100 200
همانطور که در کامند فوق مشاهده میشود، در مورد اول فایلی تحتعنوان tmp بهعنوان پارامتر ورودی درنظر گرفته شده است و در مورد دوم از ۲ عدد مختلف بهعنوان پارامترهای ورودی استفاده شده است. در اسکریپتنویسی شل، پارامتر (آرگومان) بااستفاده از یک علامت $ و یک عدد مشخص میشود؛ جدول زیر برخی از این پارامترها را نشان میدهد:
پارامتر کاربرد $0 نام اسکریپت $1 اولین پارامتر $2، $3 و غیره دومین، سومین و … پارامتر *$ تمامی پارامترها #$ تعداد آرگومانها
برای روشنتر شدن این مسأله، مثالی میزنیم؛ در ادیتور دلخواه خود فایلی تحتعنوان script.sh ساخته و محتویات زیر را داخل آن کپی کنید:
#!/bin/bash
echo "The name of this program is: $0"
echo "The first argument passed from the command line is: $1"
echo "The second argument passed from the command line is: $2"
echo "The third argument passed from the command line is: $3"
echo "All of the arguments passed from the command line are : $*"
سپس همانطور که در گذشته آموزش داده شد، بااستفاده از دستور chmod +x این فایل را قابلاجرا کنید؛ سپس با درنظر گرفتن ۳ پارامتر one two three، فایل script.sh را اجرا کنید و خروجی این اسکریپت بهصورت زیر خواهد بود:
The name of this program is: ./script.sh
The first argument passed from the command line is: one
The second argument passed from the command line is: two
The third argument passed from the command line is: three
All of the arguments passed from the command line are: one two three
چنانچه بخواهیم اسکریپت فوق را تفسیر کنیم، بایستی بگوییم که:
- $0 نام اسکریپت را چاپ میکند که برابر است با script.sh
- $1 نام اولین پارامتر را چاپ میکند که برابر است با one
- $2 نام دومین پارامتر را چاپ میکند که برابر است با two
- $3 نام سومین پارامتر را چاپ میکند که برابر است با three
- *$ هم نام هر سه پارامتر ورودی را چاپ میکند