বাশ: কমান্ড 1 ব্যর্থ হলে কমান্ড 2 চালান


43

আমি এরকম কিছু করতে চাই:

if cmd1 && cmd2
echo success
else
echo epic fail
fi

আমি এটা কিভাবে করব?


1
আপনি "ইকো সাফল্য" কমান্ডের আগে সবেমাত্র "তখন" কীওয়ার্ডটি অনুপস্থিত।
গ্লেন জ্যাকম্যান

10
হুম; আপনার সিউডোকোড আপনার শিরোনামের চেয়ে আলাদা প্রশ্ন জিজ্ঞাসা করছে .....
ম্যাটডেম

কিছু শেল স্ক্রিপ্টিং প্রস্থান অবস্থার জন্য ভালো রিসোর্স pixelbeat.org/programming/shell_script_mistakes.html
Flashman

উত্তর:


71

আপনার যা প্রয়োজন তা এগুলি করা উচিত:

cmd1 && cmd2 && echo success || echo epic fail

অথবা

if cmd1 && cmd2; then
    echo success
else
    echo epic fail
fi

3
এটি কাজ করে, তবে আমি বিভ্রান্ত হয়ে পড়েছি কেন ||প্রথম echoকমান্ডের ফলাফল দেখায় না look
mlissner

1
@ এমসিসনার, অন্যটি কোডগুলি প্রস্থান করার প্রত্যাশা করে, 0 যদি কমান্ডটি চালু হয় এবং 1 যদি ত্রুটি হয়। আউটপুট পড়বেন না। Just try whoami && whoami && echo success || echo epic failএবং এখন whoami && whoareyou && echo success || echo epic fail। "প্রথম প্রতিধ্বনি কমান্ডের আউটপুট দেখে না"
erm3nda

@ এমসিস্নার আমার ধারণা আমি আপনার প্রশ্ন পেয়েছি তবে উত্তরটি হ'ল ইকো কমান্ডটি কখনও ব্যর্থ হবে না। অর্থাৎ এর রিটার্ন 0 হবে, অর্থাত সত্য। সুতরাং যে পরিস্থিতিটি সত্যই গুরুত্বপূর্ণ তা হলcmd1 && cmd2
কাজিম জায়েদী

22

পেটর উজেল স্পট থাকলেও আপনি the? যাদু নিয়ে খেলতেও পারেন।

$? এক্সিকিউট করা শেষ কমান্ড থেকে প্রস্থান কোডটি ধরে রাখে এবং আপনি এটি ব্যবহার করলে আপনি আপনার স্ক্রিপ্টগুলি বেশ নমনীয় লিখতে পারেন।

এই প্রশ্নগুলি এই বিষয়টিকে কিছুটা স্পর্শ করে, সেরা অনুশীলনটি ব্যবহার করার জন্য? বাশে?

cmd1 
if [ "$?" -eq "0" ]
then
  echo "ok"
else
  echo "Fail"
fi

তারপরে আপনি বিভিন্ন প্রস্থান কোডগুলিতেও প্রতিক্রিয়া জানাতে পারেন এবং আপনি যদি পছন্দ করেন তবে বিভিন্ন জিনিসও করতে পারেন।


1
আমার সংস্থা, পিএইচপি বিশেষজ্ঞ, ইনক। এবং আমি আমাদের অভ্যন্তরীণ সিআই স্ক্রিপ্টের অবিচ্ছেদ্য অংশ হওয়ার জন্য আপনাকে ধন্যবাদ জানাতে চাই। ধন্যবাদ!
থিওডোর আর স্মিথ

7

প্রশ্নের ছদ্ম-কোড প্রশ্নের শিরোনামের সাথে মিলে না।

যদি কমান্ড 1 ব্যর্থ হয় তবে কমান্ড 2 কীভাবে চালাতে হবে তা যদি কারও জানা দরকার তবে এটি একটি সহজ ব্যাখ্যা:

  • cmd1 || cmd2: এটি চলবে cmd1, এবং ব্যর্থতার ক্ষেত্রে এটি চলবেcmd2
  • cmd1 && cmd2: এটি চলবে cmd1, এবং সাফল্যের ক্ষেত্রে এটি চলবেcmd2
  • cmd1 ; cmd2: এটি চলবে cmd1, এবং তারপরে এটি চলবে cmd2, দৌড়ের ব্যর্থতা বা সাফল্যের চেয়ে স্বাধীন cmd1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.