এই প্রশ্নটি কীভাবে সঠিকভাবে পালানো স্ট্রিং আক্ষরিক লিখতে হবে তা নয় । কোনও স্ক্রিপ্টের মধ্যে বা অন্যান্য প্রোগ্রামের মাধ্যমে সরাসরি ব্যবহারের জন্য ভেরিয়েবলগুলি কীভাবে পালাতে হয় সে সম্পর্কিত কোনও সম্পর্কিত প্রশ্ন আমি খুঁজে পেলাম না।
আমার লক্ষ্য হ'ল অন্যান্য স্ক্রিপ্টগুলি তৈরি করতে কোনও স্ক্রিপ্ট সক্ষম করা। এর কারণ, উত্পাদিত স্ক্রিপ্টগুলির কাজগুলি অন্য মেশিনে 0 থেকে n বার যে কোনও জায়গায় চলবে এবং যে তথ্য থেকে তারা উত্পন্ন হয় সেগুলি আবার চালানোর আগেই পরিবর্তন হতে পারে (আবার), সুতরাং সরাসরি নেটওয়ার্কে অপারেশনগুলি সম্পাদন করে কাজ করে না.
একটি পরিচিত পরিবর্তনশীল যে এই ধরনের একক উদ্ধৃতি হিসাবে বিশেষ অক্ষর থাকতে পারে দেওয়া, আমি যে লিখতে একটি সম্পূর্ণরূপে পলান স্ট্রিং আক্ষরিক, যেমন একটি পরিবর্তনশীল হিসাবে প্রয়োজন foo
ধারণকারী bar'baz
হিসাবে উত্পন্ন লিপিতে প্রদর্শিত হওয়া উচিত:
qux='bar'\''baz'
যা "qux=$foo_esc"
স্ক্রিপ্টের অন্যান্য লাইনে যুক্ত করে লেখা হবে। আমি এটি পার্ল ব্যবহার করে এটি করেছি:
foo_esc="'`perl -pe 's/('\'')/\\1\\\\\\1\\1/g' <<<"$foo"`'"
তবে এটি ওভারকিলের মতো বলে মনে হচ্ছে।
একা বাশ দিয়ে এটি করার ক্ষেত্রে আমার কোনও সাফল্য নেই। আমি এর বিভিন্ন প্রকরণ চেষ্টা করেছি:
foo_esc="'${file//\'/\'\\\'\'}'"
foo_esc="'${file//\'/'\\''}'"
তবে হয় অতিরিক্ত স্ল্যাশগুলি আউটপুটে উপস্থিত হয় (যখন আমি করি echo "$foo"
) অথবা তারা একটি সিনট্যাক্স ত্রুটির সৃষ্টি করে (শেল থেকে করা হলে আরও ইনপুট প্রত্যাশা করে)।
alias "varname=$varname" varname
বাvar=value set
alias
এবং / অথবাset
মোটামুটি সর্বজনীন