অন্যান্য প্রতিক্রিয়াগুলি থেকে সংশ্লেষকরণ: pushdবাশ-নির্দিষ্ট এবং আপনি তৈরি করছেন অন্য একটি পসিক্স শেল ব্যবহার করছেন। যে অংশটি বিভিন্ন ডিরেক্টরি প্রয়োজন তার জন্য পৃথক শেল ব্যবহার করার জন্য একটি সাধারণ কাজ রয়েছে, সুতরাং কেবল এটিকে এটিতে চেষ্টা করে দেখুন:
test -z gen || mkdir -p gen \
&& ( cd $(CURRENT_DIRECTORY)/genscript > /dev/null \
&& perl genmakefile.pl \
&& mv Makefile ../gen/ ) \
&& echo "" > $(CURRENT_DIRECTORY)/gen/SvcGenLog
(আমি পরিবর্তনশীল প্রসারণের সাথে দীর্ঘ পথটি প্রতিস্থাপন করেছি probably সম্ভবত আমি মেকফিলের মধ্যে একটি এবং এটি বর্তমান ডিরেক্টরিতে স্পষ্টভাবে প্রসারিত হয়েছে)।
যেহেতু আপনি এটি মেক থেকে চালাচ্ছেন, আমি সম্ভবত পরীক্ষাকে একটি মেক রুল দিয়ে প্রতিস্থাপন করব। ঠিক
gen/SvcGenLog :
mkdir -p gen
cd genscript > /dev/null \
&& perl genmakefile.pl \
&& mv Makefile ../gen/ \
echo "" > gen/SvcGenLog
(বর্তমান ডিরেক্টরি উপসর্গটি বাদ পড়েছে; আপনি যে কোনও উপায়ে আপেক্ষিক পথ ব্যবহার করছেন) এবং নিয়মকে কেবল নির্ভর করে না gen/SvcGenLog। এটি কিছুটা বেশি পঠনযোগ্য হবে এবং আপনি এটির genscript/genmakefile.plউপরও নির্ভর করতে পারেন , সুতরাং আপনি স্ক্রিপ্টটি পরিবর্তন করলে Makefileইন genপুনরায় জেনারেট হবে। অবশ্যই যদি অন্য কোনও বিষয়বস্তুকে প্রভাবিত Makefileকরে, আপনিও সেই নিয়মকে নির্ভর করতে পারেন।
pushd। আপনার মধ্যে ধাক্কা আছে$PATH?