بسط پارامتر اصطلاحی است که به هر عملی اشاره میکند که موجب بسط یافتن(تعویض با محتوا) یک پارامتر گردد. در اساسیترین شکل، بسط پارامتر با پیشوند کردن پارامتر توسط یک علامت
$ echo "'$ USER ', '$ USERs ', '$ { USER } s'"'lhunath', '', 'lhunaths'
این مثال شرح میدهد که اساس بسط پارامتر(PE) چگونه است. دومین PE به یک رشته تهی منجر میشود. به علت آنکه پارامتر
بسط پارامتر همچنین ترفندهایی برای ویرایش رشتهای که بسط خواهد یافت، به ما میدهد. این عملیات میتوانند بسیار مناسب باشند:
$for file in *.JPG *.jpeg >do mv "$ file " "$ { file %.* } .jpg" >done
کد بالا میتواند برای تغییر نام همه فایلهای JPEG با پسوند .JPG یا .jpeg به فایل با پسوندمعمول .jpg استفاده شود. عبارت
در اینجا خلاصهای ازاکثر ترفندهای PE که معتبر هستند آمده است:
با تمرین، همه موارد فوق را یاد میگیرید. اینها، اغلب خیلی بیش از آنکه فکر میکنید، سودمند خواهند بود. در اینجا چند مثال برای شروع اولیه شما:
$file ="$HOME/.secrets/007 "; \ > echo "File location: $file "; \ > echo "Filename: ${ file ##*/} "; \ > echo "Directory of file: ${ file %/*} "; \ > echo "Non-secret file: ${ file /secrets /not_secret } "; \ > echo; \ > echo "Other file location: ${ other :-There is no other file } "; \ > echo "Using file if there is no other file: ${ other :=$file } "; \ > echo "Other filename: ${ other ##*/} "; \ > echo "Other file location length: ${ #other } "File location: /home/lhunath/.secrets/007 Filename: 007 Directory of file: /home/lhunath/.secrets Non-secret file: /home/lhunath/.not_secret/007 Other file location: There is no other file Using file if there is no other file: /home/lhunath/.secrets/007 Other filename: 007 Other file location length: 26
تفاوت میان
$version =1.5.9 ; echo "MAJOR: ${ version %%.*} , MINOR: ${ version #*.} ."MAJOR: 1, MINOR: 5.9. $echo "Dash: $ { version /./-} , Dashes: ${ version //./-} ."Dash: 1-5.9, Dashes: 1-5-9.
توجه: نمیتوانید PEهای چندگانه را با هم به کار ببرید. اگر نیاز به اجرای PEچندگانه روی یک پارامتر دارید، باید از چندین جمله استفاده کنید:
$file =$HOME /image.jpg ;file =${ file ##*/} ; echo "${ file %.*} "image
عادت مفید:
ممکن است برای ویرایش رشتهها، به استفاده از برنامههای خارجی از قبیل sed و awk و cut و perl یا سایر برنامهها، وسوسه شوید. آگاه باشید که برای اجرای هر یک از این برنامهها، یک پردازش اضافهای باید شروع شود، که در بعضی موارد میتواند موجب کندی اجرا بشود. بسط پارامترها یک جایگزین بدون نقص است.
در مستندات گنو: Shell Parameter Expansion
در پرسش و پاسخهای رایج:
در bash چگونه میتوانم رشتهها را دستکاری کنم؟
چگونه میتوانم اثرات بسط پارامترهای جالب Bash را درپوستههای قدیمیتر داشته باشم؟
چگونه می توانم تعیین کنم که یک متغیر آیا قبلاً تعریف شده است؟
بسط پارامتر: هر گونه بسط(تعریف پیشتر را ملاحظه کنید) یک پارامتر. در حین انجام این بسط، عملیات معینی ممکن است روی کمیتی که بسط داده خواهد شد، صورت گیرد.