সাবশেলে নেস্টেড কোটস es


13

বলুন আমাকে সাবসেল আউটপুট যেমন encapsulate করতে উদ্ধৃতি ব্যবহার করতে হবে:

DATA="$(cat file.hex | xxd -r)"

তবে আমাকে এই জাতীয় জিনিসগুলি বাসা বাঁধতে হবে:

DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")"

আমি একক উদ্ধৃতি ব্যবহার করতে পারি না কারণ এগুলির মধ্যে থাকা ভেরিয়েবলগুলি প্রসারিত করে না। এসকেপিংয়ের উদ্ধৃতিগুলি কার্যকর হয় না কারণ এগুলিকে কেবল প্যাসিভ পাঠ্য হিসাবে বিবেচনা করা হয়।

আমি কীভাবে এটি পরিচালনা করব?


আপনি ব্যবহার করবেন না কেন DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"?
কিউংলম

উত্তর:


19

আপনি যেহেতু, একটি subshell ভিতরে কোট অব্যাহতি প্রয়োজন হবে না বর্তমান শেল (এটা থেকে কিছু ব্যাখ্যা নেই তাদের ব্যাখ্যা নেই $(করার ), আসলে), এবং subshell কোন কোট যে উপরোক্ত সম্পর্কে জানে না।

ভেরিয়েবল অ্যাসাইনমেন্টে সাবসেল উদ্ধৃত করাও অপ্রয়োজনীয়, আরও তথ্যের জন্য দেখুন man bash


1
এটি আপনি যা করার চেষ্টা করছেন তার উপর নির্ভর করে তবে এটি সাধারণত সেরা অনুশীলন। দেখুন github.com/koalaman/shellcheck/wiki/Sc2086
LPCRoy

8

আপনার ভিতরে নেস্টেড উদ্ধৃতিগুলি এড়াতে হবে না। তারা সঠিকভাবে পার্স করা হয়, আশ্চর্য!

DATA="$(cat file.hex | xxd -r | tr -d "$(cat trim.txt)")"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.