আমি লক্ষ করেছি যে zsh এ দুটি লুপ তৈরির বিকল্প উপায় রয়েছে :
for x (1 2 3); do echo $x; done
for x in 1 2 3; do echo $x; done
তারা উভয় মুদ্রণ:
1
2
3
আমার প্রশ্ন, দুটি বাক্য গঠন কেন? তাদের প্রত্যেকের মধ্যে কি $x
বিভিন্ন ধরণের অবজেক্টের মাধ্যমে পুনরাবৃত্তি হচ্ছে ?
বাশ কি একইরকম পার্থক্য করে?
সংযোজন:
নিম্নলিখিতগুলি কেন কাজ করে ?:
#!/bin/zsh
a=1
b=2
c=5
d=(a b c)
for x in $d; do print $x;done
কিন্তু এই না ?:
#!/bin/zsh
a=1
b=2
c=5
d=(a b c)
# It complains with "parse error near `$d'"
for x $d; do print $x;done
for i ({0..4..2}) for j ({a..c}) echo "($i,$j)"
= বাদ দিতে দেয় {0,2,4}x{a,b,c}
। সেমিকোলনগুলি বাইরেরতম লুপে প্রয়োগ হয় এবং পুনঃনির্দেশগুলি অন্তঃস্থরের ক্ষেত্রে প্রযোজ্য এবং আপনার যদি এটি পরিবর্তন করতে হয় তবে আপনার কেবল ধনুর্বন্ধনী প্রয়োজন: for i ({0..4..2}) { for j ({a..c}) echo "($i,$j)" } | cat -n
= {1,...,9}*({0,2,4}x{a,b,c})
। অবশ্যই আপনি zsh বিস্তারের সাথে লুপগুলি একত্রিত করতে পারেন:for i ("("{0..4..2}","{a..c}")") echo $i
for x ($d); do print $x; done
কাজ করবে এবং এটি আপনার প্রশ্নের শুরুতে গণনা করা প্রথম সিনট্যাক্সের সাথে মিলবে।