দ্বারা সংজ্ঞা , একটি টেক্সট ফাইল লাইনের একটা ক্রম নিয়ে গঠিত। একটি রেখা একটি নিউলাইন চরিত্রের সাথে শেষ হয়। সুতরাং একটি পাঠ্য ফাইল একটি নতুন লাইন অক্ষর দিয়ে শেষ হয়, যদি না এটি খালি থাকে।
read
বিল্টিন কেবল টেক্সট ফাইলগুলি পড়ার জন্য বোঝানো হয়। আপনি কোনও পাঠ্য ফাইলটি পাস করছেন না, সুতরাং আপনি এটি নির্বিঘ্নে কাজ করার আশা করতে পারবেন না। শেলটি সমস্ত লাইন পড়ে - এটি কী এড়িয়ে চলেছে তা শেষ লাইনের পরে অতিরিক্ত অক্ষর।
আপনার যদি কোনও সম্ভাব্য ত্রুটিযুক্ত ইনপুট ফাইল থাকে যা এটির শেষ লাইনটি অনুপস্থিত হতে পারে তবে আপনি এটিতে একটি নতুন লাইন যুক্ত করতে পারেন, নিশ্চিত হওয়া নিশ্চিত।
{ cat "/tmp/urlFile"; echo; } | …
যে ফাইলগুলি পাঠ্য ফাইল হওয়া উচিত তবে চূড়ান্ত নিউলাইনটি অনুপস্থিত তা উইন্ডোজ সম্পাদকরা প্রায়শই উত্পাদিত হয়। এটি সাধারণত উইন্ডোজ লাইন এন্ডিংয়ের সাথে মিলিত হয়, যা ইউনিক্সের এলএফ এর বিপরীতে সিআর এলএফ হয়। সিআর অক্ষরগুলি খুব কমই কোথাও দরকারী, এবং ইউআরএলগুলিতে কোনও অবস্থাতেই উপস্থিত হতে পারে না, তাই আপনার এগুলি সরিয়ে দেওয়া উচিত।
{ <"/tmp/urlFile" tr -d '\r'; echo; } | …
ইনপুট ফাইলটি সুগঠিত হয়ে গেলে এবং একটি নতুন লাইনের সাথে শেষ না হলে, echo
অতিরিক্ত খালি লাইন যুক্ত করে। যেহেতু ইউআরএলগুলি খালি থাকতে পারে না, কেবল ফাঁকা রেখাগুলি উপেক্ষা করুন।
এটিও নোট করুন যে read
সোজা উপায়ে লাইনগুলি পড়ে না। এটি নেতৃস্থানীয় এবং পিছনের শ্বেত স্পেস উপেক্ষা করে, যা কোনও ইউআরএল এর পক্ষে সম্ভবত পছন্দসই। এটি একটি রেখার শেষে একটি পলায়ন চরিত্র হিসাবে ব্যাকস্ল্যাশকে আচরণ করে, যার ফলে পরবর্তী লাইনটি প্রথম বিয়োগের সাথে ব্যাকস্ল্যাশ-নিউলাইন অনুক্রমের সাথে যুক্ত হয়ে যায়, এটি অবশ্যই কাম্য নয়। সুতরাং আপনার -r
বিকল্পটি পাস করা উচিত read
। এটির read
চেয়ে সঠিক জিনিস হওয়া খুব খুব বিরল read -r
।
{ <"/tmp/urlFile" tr -d '\r'; echo; } | while read -r url
do
if [ -z "$url" ]; then continue; fi
…
done