আমি জিএনইউ মেক 3.81 কে নির্দেশ দেওয়ার চেষ্টা করছি যে কোনও কমান্ড ব্যর্থ হলে (থামাতে না দিয়ে কমান্ডটি উপস্থাপন -
করি) থামাতে তবে আমি পরবর্তী কমান্ডের প্রস্থান স্থিতিটি পরীক্ষা করে আরও তথ্যমূলক বার্তা প্রিন্ট করতে চাই। তবে নীচে আমার মেকফাইল ব্যর্থ হয়েছে:
$ cat Makefile
all:
-/bin/false
([ $$? -eq 0 ] && echo "success!") || echo "failure!"
$
$ make
/bin/false
make: [all] Error 1 (ignored)
([ $? -eq 0 ] && echo "success!") || echo "failure!"
success!
উপরের মেকফিলটি কেন "সাফল্য!" পরিবর্তে "ব্যর্থতা!" ?
হালনাগাদ:
গ্রহণযোগ্য উত্তরের অনুসরণ ও প্রসারিত, নীচে এটি কীভাবে লেখা উচিত তা নিচে দেওয়া হয়েছে:
failure:
@-/bin/false && ([ $$? -eq 0 ] && echo "success!") || echo "failure!"
success:
@-/bin/true && ([ $$? -eq 0 ] && echo "success!") || echo "failure!"
.SHELLFLAGS = -ec
করতে ব্যবহার করা উচিত। তবে এই ক্ষেত্রে আপনি -
আরও উপসর্গ ব্যবহার করতে পারবেন না (প্রাপ্তির ব্যক্তিগত কমান্ডের জন্য) কারণ মেক লিখবে যে ত্রুটিটিকে অগ্রাহ্য করা হয়েছে তবে তবুও সমস্ত ব্লক ব্যর্থ হবে। সুতরাং, || :
কমান্ড উপেক্ষা করার একটি সমাধান। তবে এটি ক্রস প্ল্যাটফর্ম নয় (উইন্ডোজের নেই || :
বা আছে || true
)
.ONESHELL:
নির্দেশটি তদন্ত করতে চাইতে পারেন ।