استفاده از مزیت عناصر آرایهها به راستی آسان است. به علت آنکه یک آرایه وسیله مطمئن ذخیره است، ما به سادگی میتوانیم یک حلقه for را برای تکرار روی عناصر آن، به کار ببریم:
$for file in "$> { myfiles [@]} ";do > cp"$ /backups/ >file "done
به ترکیب دستوری استفاده شده برای بسط آرایه در اینجا توجه نمایید. ما شکل نقلقولی به کار بردهایم:
دو مثال زیر نتیجه یکسان دارند:
$names =( "Bob" "Peter" "$ USER ""Big Bad John" ) $for name in "$ { names [@]} ";do echo"$ name ";done
$for name in "Bob" "Peter" "$ USER " "Big Bad John"; do echo"$ name ";done
مثال اول یک آرایه به نام
به خاطر داشته باشید، بسط
مثال فوق آرایه را در یک ساختار حلقه
myfiles =( cpdb.sql home.tbz2 etc.tbz2 )"$ /backups/{ myfiles [@]} "
این مثال، دستور cp را، با تعویض عبارت
cp"db.sql" "home.tbz2" "etc.tbz2" /backups/
فرمان cp فایلها را به دایرکتوری /backups/ شما کپی خواهد نمود.
همچنین میتوانیدعناصر منفرد آرایه را با ارجاع به شماره عضویت آنها(که index یا شاخص نام دارد)، بسط بدهید. به خاطر داشته باشید، که به طور پیشفرض،آرایهها zero-based میباشند، یعنی شماره شاخص اولین عضو آنها صفر میباشد:
$ echo "The first name is:$ { names[0] } " $ echo "The second name is:$ { names[1] } "
( میتوانید آرایهای بدون عضو شماره صفر ایجاد کنید. آنچه قبلاً در مورد آرایههای پراکنده گفتیم را به خاطر بیاورید --شما میتوانید بین شاخصها حفره داشته باشید--، و این مطلب در ابتدای آرایه نیز به همان خوبی صدق میکند. این وظیفه شما به عنوان برنامهنویس است که بدانیدکدامیک از آرایههای شما به طور بالقوه پراکنده است، و کدامیک اینطور نیست.)
روش دیگری نیز برای بسط تمام عناصر آرایه وجود دارد، که به شکل "
$names =( "Bob" "Peter" " $ USER " "Big Bad John") $ echo "Today's contestants are:$ { names [*] } "Today's contestants are: Bob Peter lhunath Big Bad John
توجه نمایید که در رشته حاصل شده، راهی برای گفتن آنکه نامها، کجا شروع و کجا ختم گردیدهاند، وجود ندارد! این است چرایی آنکه، هر چیزی را تا آنجا که ممکن است، جدا نگاه میداریم.
به خاطر داشته باشید، هنوز هم به دقت نقلقولی نمایید! اگر
میتوانید متغیر
$names =( "Bob" "Peter" " $ USER " "Big Bad John") $( echo "Today's contestants are:IFS =,;$ { names [*] } ") Today's contestants are: Bob,Peter,lhunath,Big Bad John
توجه نمایید که در این مثال، چگونه جمله IFS=,; echo ... را با قرار دادن بین
افسوس، بسط "
فرمان printf در اینجا سزاوار یک یادآوری میباشد، زیرا روش فوق العاده برازنده نسخه برداری از یک آرایه است:
$names =( "Bob" "Peter" " $ USER " "Big Bad John") $ printf"%s\n" "$ { names [@] } "Bob Peter lhunath Big Bad John
البته یک حلقه
$ printf"%s\0" "$ { myarray [@] } "> myfile
یک نکته پایانی: شما میتوانید تعداد عناصر یک آرایه را با استفاده از
$array =( a b c ) $ echo ${ # array [@]} 3
تکرار مفید:
همیشه بسط آرایهها را به طور صحیح نقلقولی کنید، درست همانطور که بسط پارامترهای معمولی را نقلقولی میکنید .
از