শ্বেত স্পেস ইকো >> এর সাথে ধসে পড়েছে


10

আমি এমন একটি স্ক্রিপ্ট তৈরি করছি যা কোনও ফাইলের বিষয়বস্তু পড়ে, বিষয়বস্তুগুলি পরিচালনা করে এবং অন্য কোনও ফাইলে সংযোজন করে (বিশেষত ভার্চুয়াল হোস্ট ফাইলটি)। আউটপুট ফাইলে ফর্ম্যাট এবং সাদা স্থান গুরুত্বপূর্ণ তবে আমি যখন বিষয়বস্তু লিখি তখন শ্বেত স্পেসটি বাইরে বেরিয়ে যায়।

VHOST_PATH="/etc/apache2/extra/httpd-vhosts.conf"
TEMPLATE_PATH="./template.conf"
TEMPLATE=$(<TEMPLATE_PATH)
# manipulating $TEMPLATE
echo $TEMPLATE                   #outputs correct whitespace
echo $TEMPLATE >> $VHOST_PATH    #does not output correct whitespace

তাই প্রথম প্রতিধ্বনি কিছু তৈরি করে

<VirtualHost *:80>
    ServerAdmin webmaster@domain
    DocumentRoot "root/web"
    ServerName domain
    ErrorLog "root/logs/error_log"
</VirtualHost>

তবে ফাইলটিতে যে স্ট্রিং আসে তা হ'ল

<VirtualHost *:80> ServerAdmin webmaster@domain DocumentRoot "root/web" ServerName domain ErrorLog "root/logs/error_log" </VirtualHost>

লক্ষ্য ফাইলটিতে সংযোজন করার সময় আমি কীভাবে সাদা স্থান সংরক্ষণ করব? আমি এটির জন্য অনুসন্ধান করেছি কিন্তু অনুরূপ সমস্ত প্রশ্নগুলি আমার স্ক্রিপ্টে এটি পুনরায় লেখা ছাড়াই প্রযোজ্য নয়।

উত্তর:


9

অন্যান্য প্রতিটি প্রোগ্রামের মতো, প্রতিধ্বনিটি পৃথক আর্গুমেন্ট হিসাবে সাদা জায়গার দ্বারা পৃথক স্ট্রিংকে ব্যাখ্যা করে pre

ফোন করার পরে

echo foo    bar

শেল দ্বারা প্রতিধ্বনিত হওয়া কেবলমাত্র ডেটা হ'ল প্রথম আর্গুমেন্টটি fooএবং দ্বিতীয়টি bar

একক আর্গুমেন্ট হিসাবে শ্বেত স্পেসযুক্ত একটি সম্পূর্ণ স্ট্রিং পাস করতে, এটি ডাবল উদ্ধৃতিতে আবদ্ধ করুন:

echo "foo    bar"

চারটি স্পেস মুদ্রণ করবে।


একদিকে নোটে: আমি এটি অবাক করেছিলাম যে echo $TEMPLATEকাজ করবে। এটির পাশাপাশি একাধিক শ্বেতস্থানও ভেঙে ফেলা উচিত।
ডেনিস

হ্যাঁ! ঐটা এটা ছিল. এটি সম্পূর্ণ জ্ঞান করে তবে আমি বুঝতে পারি নি যে এটিই ছিল। এছাড়াও, echo $TEMPLATEকাজ করছিল কারণ আমার চারপাশে উক্তি ছিল তবে আমি এটি আমার পোস্টে অনুলিপি করতে অবহেলা করেছি I আমি তা গুরুত্বপূর্ণ মনে করি নি। আমি ভৃল ছিলাম!
জেফ


1
@ জেফ, পুনর্নির্মাণের পরিবর্তে কাটা এবং পেস্ট করাতে সহায়তা চাইলে এটি সমালোচনামূলকভাবে গুরুত্বপূর্ণ।
গ্লেন জ্যাকম্যান

@glennjackman আমি ভেবেছিলাম যে আমি স্ক্রিপ্টগুলি এত সংক্ষিপ্ত এবং পুনরায় টাইপ করে পালাতে পারব এবং টার্মিনালে কাজ করায় কপি + পেস্ট করা ব্যথা হবে। আমি ভৃল ছিলাম. পাঠ শিখেছি। ভকভগক.
জেফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.