سرفصل‌های آموزشی
آموزش لینوکس
آشنایی با پارامترهای اسکریپتی

آشنایی با پارامترهای اسکریپتی

کاربران غالباً نیاز دارند تا برای یک اسکریپت خاص یکسری پارامترهای ورودی درنظر بگیرند که از جملهٔ این پارامترها می‌توان به نام فایل، تاریخ و … اشاره کرد. جالب است بدانیم که نوع این پارامترهای ورودی هم می‌توانند عددی باشند و هم چیزی همچون یک فایل:

$ ./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
  •  *$ هم نام هر سه پارامتر ورودی را چاپ می‌کند
online-support-icon