উত্তর:
এটি কি কেবল "প্রশ্ন জানতে চাই" প্রশ্নটি রয়েছে, বা এর বাস্তব ব্যবহারের কেস আছে? এটি সম্পন্ন করার জন্য আমরা কিছু জিমন্যাস্টিকের মধ্য দিয়ে যেতে পারি:
$ eval echo\ {a,b,c}\;
a
b
c
তবে আমি আমাদের সিস্টেমের স্ক্রিপ্টগুলিতে এই ধরণের অবলম্বন কমান্ডগুলি প্রেরণকারীকে খুঁজে বের করব nt
পরিবর্তে স্পষ্টতার জন্য যান না কেন:
$ for X in {a,b,c}; do echo $X; done
এমনকি আপনি পুরো-হোগে যেতে পারেন এবং বেশ কয়েকটি নিউলাইন তৈরি করতে পারেন এবং এটিকে কিছুটা ইনডেন্ট করতে পারেন যাতে আপনি কী করতে চেষ্টা করছেন তা সর্বদা বুঝতে সক্ষম হবেন।
for
এই জন্য কাজ, কিন্তু এটি এখনও আরও টাইপিং আছে: পি
eval git branch -d \{ branch-a, branch-b }\;
মার্ক মানের নির্বাচিত উত্তরের ভিত্তিতে আমি এই উদাহরণটি আরও প্রকাশ করতে পেরেছি, যা দুর্দান্ত কাজ করে:
$ eval echo\ category_{17,32,33}.properties\{,.bak\}\;
category_17.properties category_17.properties.bak
category_32.properties category_32.properties.bak
category_33.properties category_33.properties.bak
যা প্রদর্শিত হচ্ছে তা হ'ল যখন আপনি কোনও লাইনের মধ্যে ব্রেস প্রসারণের একাধিক ঘটনা ব্যবহার করছেন, তখন মার্কের মূল উদাহরণটি প্রতিটি প্রকরণকে স্বতন্ত্রভাবে মুদ্রণ করত। পরিবর্তে, আমি একাধিক ফাইল সরিয়ে / পুনরায় নামকরণ করতে তার উত্তরটি ব্যবহার করতে চেয়েছিলাম। আউটপুটটি mv
সাধারণত ( mv oldfilename newfilename
)) প্রত্যাশিত ফর্ম্যাটের সাথে মিলে যায় তা নিশ্চিত করার জন্য , আমি ব্রেস প্রসারণের দ্বিতীয় ঘটনাটি এড়িয়ে গিয়েছিলাম, যাতে প্রাথমিক কমান্ড কার্যকর হওয়ার পরে এটির মূল্যায়ন করা হবে না eval
।
উপরের আউটপুটটি প্রত্যাশার মতো প্রদর্শিত হয়েছিল, আমি তখন নিম্নলিখিত কমান্ডটি চালাতে সক্ষম হয়েছি:
$ eval mv\ category_{17,32,33}.properties\{,.bak\}\;
$ ls
category_17.properties.bak category_32.properties.bak category_33.properties.bak
তার মূল উত্তরের জন্য মার্ককে অনেক ধন্যবাদ। আপনি যদি উত্তরটি পছন্দ করেন তবে তার উত্তরটি আমাকে কী করতে দেয় :-)
printf '%s\n' echo{\ a,\ b,\ c}
file-{r,b,g}{m,n,o}{x,y.z}.foo
তবে সমস্ত 27 মান গণনার চেয়ে সংক্ষিপ্ত ফর্মটি ব্যবহার করা ভাল।