উত্তর:
এর পরিবর্তে আপনার ব্যবহার printfকরা উচিতecho :
printf "%s\n" "${mtches[@]}"
যদি mtchesখালি থাকে তবে এখনও একটি খালি লাইন আউটপুট হবে। তার জন্য অ্যাকাউন্ট করতে:
{ [ "${#mtches[@]}" -eq 0 ] || printf '%s\n' "${mtches[@]}"; } > file
ইন bash(এবং POSIX শাঁস), আপনি প্রায়ই ব্যবহার অবস্থানগত পরামিতি অ্যারে হিসাবে "$@"পরিবর্তে "$*", যদি না আপনি একটি বিশেষ কারণ আছে। ম্যান বাশ থেকে - বিভাগের অ্যারেগুলি থেকে নিয়মিত অ্যারেগুলিকে সমর্থন করে এমন গোলাগুলিতে এটি সত্য :
অ্যারের কোনও উপাদান $ {নাম [সাবস্ক্রিপ্ট] using ব্যবহার করে রেফারেন্স করা যেতে পারে} শেলের ফাইল নাম সম্প্রসারণ অপারেটরগুলির সাথে দ্বন্দ্ব এড়াতে ধনুর্বন্ধনী প্রয়োজন সাবস্ক্রিপ্ট যদি '@' বা '*' হয় তবে শব্দটি অ্যারের নামের সমস্ত সদস্যের কাছে প্রসারিত হয়। এই সাবস্ক্রিপ্টগুলি কেবল তখনই পৃথক হয় যখন শব্দটি ডাবল উদ্ধৃতিতে উপস্থিত হয়। যদি শব্দটি ডাবল-কোট করা হয় তবে $ {নাম [*] আইএফএস ভেরিয়েবলের প্রথম অক্ষর দ্বারা পৃথক পৃথক প্রতিটি অ্যারে সদস্যের মান সহ একটি শব্দে প্রসারিত হয় এবং $ {নাম [@] name নামের প্রতিটি উপাদানকে প্রসারিত করে একটি পৃথক শব্দ। যখন কোনও অ্যারে সদস্য না থাকে, তখন $ {নাম [@]। কিছুতেই প্রসারিত হয়। যদি কোনও শব্দের মধ্যে দ্বিগুণ-উদ্ধৃত প্রসারণ ঘটে তবে প্রথম প্যারামিটারের প্রসারটি মূল শব্দের প্রারম্ভিক অংশের সাথে যুক্ত হয় এবং শেষ প্যারামিটারের প্রসারণটি মূল শব্দের শেষ অংশের সাথে যুক্ত হয়।
"${array[*]}"আপনি যখন কোনও স্ট্রিতে সমস্ত অ্যারে উপাদানগুলিতে যোগদান করতে চান কেবল তখনই ব্যবহার করুন ।
আপনি ${mtches[*]}পরিবর্তে ব্যবহার করতে চান ।
আপনি যখন ব্যবহার করবেন "${mtches[@]}", এটির মূল্য কী তা বিবেচনাধীন নয় $IFS, বাশ অ্যারেটিকে একাধিক যুক্তিতে বিভক্ত করবে। আপনি যা চান তা হ'ল প্রতিটি অ্যারে উপাদান সহ একক যুক্তি \n। ${mtches[*]}এটি সম্পাদন করে
এছাড়াও সেটিংয়ের একটি অস্থায়ী উপায় হিসেবে $IFS, আপনি কি করতে পারেন:
( IFS=$'\n'; echo "${mtches[*]}" > sample1.txt )
তারপরে আপনাকে এটিকে আবার সেট করে নিয়ে বিরক্ত করতে হবে না।
printf...
এর জন্য ব্যবহার :
for each in "${alpha[@]}"
do
echo "$each"
done
ইতিহাস ব্যবহার ; নোটগুলি ব্যর্থ হবে যদি আপনার মানগুলি থাকে !:
history -p "${alpha[@]}"
বেসনাম ব্যবহার করা ; নোটগুলি ব্যর্থ হবে যদি আপনার মানগুলি থাকে /:
basename -a "${alpha[@]}"
শুফ ব্যবহার করা ; নোট করুন যে ফলাফলগুলি যাতে ক্রমে বেরিয়ে আসে না:
shuf -e "${alpha[@]}"
for ENTRY in ${ARRAY[@]}; do
echo $ENTRY
done > outfile
সুন্দর এবং পঠনযোগ্য এবং এর অর্থ আইএফএসের সাথে বিশৃঙ্খলা নয়। এর অর্থ হ'ল আপনি প্রতিটি লাইনের হ্যান্ডলিং কাস্টমাইজ করতে পারেন।
echoযা স্বেচ্ছাচারী বিষয়বস্তু জন্য ব্যবহার করা যাবে না এবং আপনার ভেরিয়েবল উদ্ধৃত করতে ভুলে গেছেন । কিছুটা ভাল সংস্করণ ইতিমধ্যে স্টিভেনপেনি পোস্ট করেছেন