আমি যদি কোনও স্ক্রিপ্ট থেকে এই আদেশগুলি চালিত করি:
#my.sh
PWD=bla
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
xxx
bla
এটা উত্তম.
তবে, আমি যদি চালাই:
#my.sh
sed 's/xxx/'$PWD'/'
...
$ ./my.sh
$ sed: -e expression #1, char 8: Unknown option to `s'
আমি টিউটোরিয়ালে পড়েছি যে শেল থেকে পরিবেশের ভেরিয়েবলগুলি প্রতিস্থাপন করতে আপনাকে থামাতে হবে, এবং $varname
অংশটি 'আউট কোট' করতে হবে যাতে এটি সরাসরি প্রতিস্থাপন করা হয় না, যা আমি করেছি এবং যা কেবলমাত্র ভেরিয়েবলটি সংজ্ঞায়িত করার আগেই কাজ করে।
$var
শেলটিতে সংজ্ঞায়িত হওয়ার সাথে সাথে পরিবেশের পরিবর্তনশীল হিসাবে আমি কীভাবে চিনতে পারি?
set -x
প্রতিটি কমান্ড কার্যকর হওয়ার আগে শেলটি প্রতিধ্বনিত করতে শেলটি ব্যবহার করুন। এটি অনেকগুলি বিভ্রান্তি দূর করতে পারে। (এছাড়াও, আমি প্রায়ই ব্যবহার set -u
ডি উল্লেখ সেট না ভেরিয়েবল একটি হার্ড ভুল করার জন্য (দেখুন। set -e
খুব)।)