কীভাবে লাইন ফিডটি বজ কমান্ড দ্বারা ফলস্বরূপ রাখা যায়


3

ধরা যাক, আমি এক্সএমএক্স মেশিনকে ইউজার ফু হিসাবে মেশাতে পারি, তারপরে মৃত্যুদন্ড কার্যকর করার পরে:

$result=$(rsh -l foo XXX "ls");
echo $result;

আমি দেখতে পেয়েছি যে ফলাফলটিতে লাইন ফিড সরানো হয়েছে, এবং আমি লাইন উপায়ে এক লাইনে ফলাফল দেখতে পাচ্ছি না। সুতরাং আমি কি করতে হবে যদি আমি পুনরায় ফলাফলের লাইনে ফিড চাই?


আপনি যখন ভেরিয়েবলটি অর্পণ করেন তখন আপনার সামনে ডলারের সাইন থাকা উচিত নয়। rsh=$(rsh -l foo XXX "ls")। সমাপ্তি সেমিকোলনগুলি নিষ্প্রয়োজনীয় তবে ক্ষতিহীন।
ট্রিপলি

উত্তর:


5

নতুন লাইন আছে; ত্রুটিটি echoএটি পরীক্ষা করতে ব্যবহার করে (ভেরিয়েবলের চারপাশে ডাবল কোট ছাড়াইও!)

result=$(rsh -l foo XXX "ls")
echo "$result"

তুচ্ছ মামলায়, আপনি উদ্ধৃতি ছাড়াই পালাতে পারবেন, তবে আকর্ষণীয় ক্ষেত্রে এমনকি সুরক্ষার সমস্যা থাকতে পারে

যদি আপনি কেবলমাত্র স্ট্যান্ডার্ড আউটপুট ক্যাপচার করে থাকেন rshযাতে আপনি নিজেরাই এটি স্ট্যান্ডার্ড আউটপুটে মুদ্রণ করতে পারেন, এটির অকেজো ব্যবহারecho


সম্ভবত তিনি পছন্দ sshউপর rshএবং ব্যবহার করবেন না lsস্ক্রিপ্ট হবে।
ট্রিপলি

1

সম্পাদনা: আপনি যদি প্রতিটি ফাইলের মধ্যে নতুন লাইনগুলি বোঝাতে চান তবে ফলাফলটি উদ্ধৃত করার বিষয়টি নিশ্চিত করুন:

result="$(rsh -l foo XXX "ls");"

এটি NUL ( ) ব্যতীত অন্য কোনও অক্ষর রাখবে $'\0', যা বাশ ভেরিয়েবলে সংরক্ষণ করা যাবে না।

যদি আপনি যদি বোঝাতে চান যে পেছনের নতুন লাইনটি হারিয়ে গেছে, তবে এটি আমার জানা সহজ সমাধান:

resultx="$(commands...; echo x)"
result="${resultx%x}"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.