আমার বাশ স্ক্রিপ্টটি কেন বহনকারী থেকে প্রস্থান কোড গ্রহণ করছে না?


4

আমি চালিত সার্ভার পরিচালনা করতে এটি আমার প্রথমবারের মতো দীর্ঘ ব্যাশ স্ক্রিপ্ট লেখার চেষ্টা করছে এবং "সেট-এক্স" ব্যবহার করার সময় স্ক্র্যাপটি যখন অমিত পরিমাণে ব্যর্থ হয় তখন উপস্থিত হয়। আমি ভেবেছিলাম আমার যদি বিবৃতিটি এটি ধরে ফেলবে তবে ইকো চালানোর আগে স্ক্রিপ্টটি প্রস্থান করবে।

আমি এখানে কি উপেক্ষা করছি?

umount $MOUNTPATH
if [[ $? -ne 0 ]];
then
  /bin/echo "Failed to unmount!  Already unmounted?"
fi

উত্তর:


4

set -eকমান্ড ব্যর্থ হওয়ার সাথে সাথে শেলটি প্রস্থান করবে। অর্থাৎ unmountকমান্ড শেষ হওয়ার সাথে সাথে। ifএটা ধরতে পারি নি, যেহেতু স্ক্রিপ্ট সামনে এটা এমনকি পায় প্রস্থান করে if। আপনি নির্বাণ এটিকে ঠিক করতে পারেন unmountকমান্ড মধ্যে শর্ত করেন (সঙ্গে অস্বীকার !এটি চালানোর করতে thenদফা যদি আনমাউন্ট ব্যর্থ হয়, বদলে যদি এটা সফল):

if ! unmount $MOUNTPATH; then
    /bin/echo "Failed to unmount!  Already unmounted?"
fi

আহ ঠিক আছে, আমি এটা বুঝতে পারি না। ধন্যবাদ.
জেফ

1

সমস্যাটি হ'ল আপনার যদি বিবৃতি দেওয়ার পরে আপনার কাছে একটি আধা-কোলন থাকে।

umount $MOUNTPATH
if [[ $? -ne 0 ]]
then
  /bin/echo "Failed to unmount!  Already unmounted?"
fi

এটি ঠিক করা উচিত।

সূত্র: http://bash.cyberciti.biz/guide/If_structures_to_execute_code_based_on_a_condition


আমাকে আরও পড়তে হবে, আমি ভেবেছিলাম আধা-কোলন প্রয়োজনীয় ছিল। আমি এখন দেখতে পাচ্ছি যদি আমি একই লাইনে রাখি তবেই। ধন্যবাদ.
জেফ

বাশ
prateek61

আমি আরও উল্লেখ করতে চলেছি যে গর্ডন ডেভিসনের উত্তর আমার চেয়ে সম্ভবত আরও সঠিক। আমি এটি চেষ্টা করবো যতটা পরিষ্কার মনে হচ্ছে।
prateek61
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.