প্রশ্ন 'সেট-ই' কী করে, এবং কেন এটি বিপজ্জনক বলে মনে হতে পারে?


এই প্রশ্নটি প্রাক-সাক্ষাত্কারে কুইজ হাজির হয়েছে এবং এটি আমাকে পাগল করে তুলেছে। কেউ এই উত্তর এবং সহজে আমাকে করা যাবে? কুইজের একটি নির্দিষ্ট শেলের কোন রেফারেন্স নেই তবে কাজের বর্ণনাটি একটি ইউনিক্সের জন্য। আবার প্রশ্নটি সহজেই ...

'সেট-ই' কী করে, এবং কেন এটি বিপজ্জনক বলে মনে হতে পারে?


142
2018-05-19 16:39


উত্স


এখানে একটি সম্পর্কিত থ্রেড: stackoverflow.com/questions/64786/error-handling-in-bash/... - Stefan Lasiewski


উত্তর:


set -e কোনো উপমহাদেশ বা পাইপলাইন একটি অ-শূন্য স্থিতি প্রদান করলে শেলটি প্রস্থান করে।

সাক্ষাত্কার সম্ভবত উত্তর খুঁজছেন ছিল:

Init.d স্ক্রিপ্ট তৈরি করার সময় "set -e" ব্যবহার করা বিপজ্জনক হবে:

থেকে http://www.debian.org/doc/debian-policy/ch-opersys.html 9.3.2 -

Init.d স্ক্রিপ্টে set -e ব্যবহার করার বিষয়ে সতর্ক থাকুন। সঠিক init.d স্ক্রিপ্ট লেখার জন্য বিভিন্ন ত্রুটি প্রস্থান অবস্থা গ্রহণ করা প্রয়োজন যখন daemon ইতিমধ্যে চলছে অথবা init.d স্ক্রিপ্টটি বাতিল না করেই ইতিমধ্যে থামানো হয়েছে এবং সাধারণ init.d ফাংশন লাইব্রেরিগুলি কার্যকর-সেটের সাথে কল করার জন্য নিরাপদ নয়। Init.d স্ক্রিপ্টের জন্য, সেট-এ ব্যবহার করা প্রায়শই সহজ এবং পরিবর্তে প্রতিটি কমান্ডের ফলাফলটি পৃথকভাবে পরীক্ষা করে।

এটি একটি সাক্ষাত্কারের দৃষ্টিকোণ থেকে একটি বৈধ প্রশ্ন কারণ এটি সার্ভার-স্তরের স্ক্রিপ্টিং এবং অটোমেশন সম্পর্কিত কর্মরত কর্মীদের একটি গেজেস করে


148
2017-08-09 21:01



চমৎকার খুঁজে। ধন্যবাদ। - egorgry
ভাল যুক্তি. এটি টেকনিক্যালি একটি ত্রুটি হতে পারে এমন কিছু বিষয়ে বুট প্রক্রিয়াটি বন্ধ করে দেবে, তবে সমগ্র স্ক্রিপ্টটিকে থামাতে পারে না - Matt
যদিও আমি একমত stackoverflow.com/questions/78497/..., আমি মনে করি এই শৈলীটি ছোট্ট ইনট চেকস এবং লগিং বা অন্যান্য ওয়ার্কার বানর প্যাচিংয়ের জন্য ব্যাচ দিয়ে ভাল ফিট করে। লক্ষ্য করা workload.We আমাদের ডকার ইমেজ init স্ক্রিপ্টগুলির জন্য একই নীতিটি ব্যবহার করে। - joshperry


থেকে bash(1):

          -e      Exit immediately if a pipeline (which may consist  of  a
                  single  simple command),  a subshell command enclosed in
                  parentheses, or one of the commands executed as part  of
                  a  command  list  enclosed  by braces (see SHELL GRAMMAR
                  above) exits with a non-zero status.  The shell does not
                  exit  if  the  command that fails is part of the command
                  list immediately following a  while  or  until  keyword,
                  part  of  the  test  following  the  if or elif reserved
                  words, part of any command executed in a && or  ││  list
                  except  the  command  following  the final && or ││, any
                  command in a pipeline but the last, or if the  command’s
                  return  value  is being inverted with !.  A trap on ERR,
                  if set, is executed before the shell exits.  This option
                  applies to the shell environment and each subshell envi-
                  ronment separately (see  COMMAND  EXECUTION  ENVIRONMENT
                  above), and may cause subshells to exit before executing
                  all the commands in the subshell.

দুর্ভাগ্যক্রমে আমি "বিপ্লব বাকিটি কার্যকর করা হবে না" বা "সম্ভবত এটি সম্ভবত সমস্যার মুখোমুখি হতে পারে" ব্যতীত এটি বিপজ্জনক কেন ভাবতে যথেষ্ট সৃজনশীল নন।


33
2018-05-19 16:43



মুখোশ বাস্তব / অন্যান্য সমস্যা, হ্যাঁ, আমি অনুমান করেছি যে আমি এটা দেখতে পাচ্ছি ... আমি এটি বিপজ্জনক, উদাহরণস্বরূপ ... - cpbills
জন্য manpage আছে set! আমি সর্বদা শেষ পর্যন্ত builtin(1)। ধন্যবাদ। - Jared Beck
আমি কিভাবে যে ডকুমেন্টেশন জানতে হবে set মধ্যে befound হয় man 1 bash?? এবং কিভাবে কেউ খুঁজে পেতে সক্ষম হবে -e জন্য বিকল্প set এমন একটি ম্যানুয়াল পেজে কীওয়ার্ড এত বড়? আপনি শুধু cant /-e এখানে অনুসন্ধান করুন - Blauhirn
@ ব্লাউরিন ব্যবহার করছেন help set - Blauhirn


এটা উল্লেখ করা উচিত যে set -e একটি স্ক্রিপ্ট বিভিন্ন বিভাগে চালু এবং বন্ধ করা যাবে। এটি সম্পূর্ণ স্ক্রিপ্ট এর নির্বাহ জন্য হতে হবে না। এটি এমনকি শর্তসাপেক্ষে সক্রিয় হতে পারে। যে বলেন, আমি এটা ব্যবহার করি না যেহেতু আমি নিজের ভুল পরিচালনা করছি (অথবা না)।

some code
set -e     # same as set -o errexit
more code  # exit on non-zero status
set +e     # same as set +o errexit
more code  # no exit on non-zero status

এছাড়াও ব্যাশ ম্যান পৃষ্ঠা বিভাগ থেকে এটি উল্লেখযোগ্য trap কমান্ড যা বর্ণনা করে set -e নির্দিষ্ট পরিস্থিতিতে ফাংশন।

দ্য                 ব্যর্থ কমান্ড অংশ যদি ERR ফাঁদ নির্বাহ করা হয় না                 কমান্ড তালিকা অবিলম্বে কিছু বা শব্দ পর্যন্ত নিম্নলিখিত,                 একটি বিবৃতিতে পরীক্ষার অংশ, একটি কমান্ড অংশ executioned                 একটি && বা ⎪⎪ তালিকাতে, অথবা কমান্ডের ফেরত মান হচ্ছে                 মাধ্যমে বিপরীত! এই একই শর্তাবলী মেনে চলে                 errexit বিকল্প।

সুতরাং এমন কিছু শর্ত রয়েছে যার অধীনে একটি অ-শূন্য অবস্থান প্রস্থান করতে পারে না।

আমি মনে করি বিপদ বোঝার সময় নেই set -e খেলার মধ্যে আসে এবং এটি কিছু অবৈধ অনুমান অধীনে ভুলভাবে এটি উপর নির্ভর করে না এবং।

দয়া করে দেখুন BashFAQ / 105 কেন সেট করা হয় না (অথবা সেট-ই ইরেক্সিট, বা ফাঁদ ERR) আমি কি আশা করি?


19
2018-05-19 22:39



প্রশ্ন থেকে বিচ্যুত হওয়ার সময়, এই উত্তরটি ঠিক আমি যা খুঁজছি তা হল: স্ক্রিপ্টের একটি ছোট অংশে এটি বন্ধ করে দেওয়া! - Stephan Bijzitter


মনে রাখবেন এটি একটি কাজের সাক্ষাত্কারের জন্য একটি কুইজ। প্রশ্ন বর্তমান কর্মীদের দ্বারা লেখা হতে পারে, এবং তারা ভুল হতে পারে। এটি অগত্যা খারাপ নয় এবং প্রত্যেকেই ভুল করে এবং সাক্ষাতকারের প্রশ্নগুলি প্রায়শই অন্ধকার কোণে বসে থাকে এবং কেবল একটি সাক্ষাত্কারে আসে।

এটা সম্পূর্ণরূপে সম্ভব যে 'set-e' এমন কিছুই না যা আমরা "বিপজ্জনক" বিবেচনা করব। কিন্তু সেই প্রশ্নটির লেখক ভুলভাবে বিশ্বাস করতে পারেন যে 'সেট-ই' বিপজ্জনক, কারণ নিজের অজ্ঞতা বা পক্ষপাতের কারণে। সম্ভবত তারা একটি বাগি শেল স্ক্রিপ্ট লিখেছিল, এটি ভয়ঙ্করভাবে বোমা হামলা করেছিল এবং তারা ভুলভাবে চিন্তা করেছিল যে 'সেট-ই' দোষারোপ করেছিল, আসলে তারা যথাযথ ত্রুটির পরীক্ষা লিখতে অবহেলা করেছিল।

আমি গত 2 বছরে সম্ভবত 40 টি কাজের সাক্ষাত্কারে অংশগ্রহণ করেছি এবং সাক্ষাত্কারগুলি মাঝে মাঝে এমন প্রশ্ন জিজ্ঞাসা করে যা ভুল, বা কোনও উত্তর ভুল।

অথবা হয়ত এটি একটি কৌতুক প্রশ্ন, যা লোম হবে, কিন্তু সম্পূর্ণ অপ্রত্যাশিত নয়।

অথবা সম্ভবত এটি একটি ভাল ব্যাখ্যা: http://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg473314.html


13
2018-05-19 17:03



+1 আমি একই নৌকায় আছি, এবং অনেকগুলি 'প্রযুক্তিগত' সাক্ষাত্কার আমি সাথে নিয়েছি, অন্তত একটু বিভ্রান্ত হয়েছে। - cpbills
কি দারুন. ডেবিয়ান তালিকায় ভাল সন্ধান। সাক্ষাত্কার প্রশ্ন অজ্ঞতার জন্য +1। আমি একবার নেটব্যাক উত্তর নিয়ে বিতর্ক করছিলাম, আমি 100% নিশ্চিত ছিলাম যে আমি সঠিক ছিলাম। তারা নাপা বলল। আমি বাড়িতে গিয়েছিলাম এবং এটি googled, আমি ঠিক ছিল। - egorgry


set -e একটি স্ক্রিপ্টে, যখনই কোনও অ-শূন্য ফেরত মান প্রদান করে তখন প্রস্থান করার জন্য ব্যাশকে বলে।

আমি দেখতে পাচ্ছিলাম কিভাবে বিরক্তিকর, এবং বাগি, বিপজ্জনক বিষয়ে নিশ্চিত না হওয়া পর্যন্ত, যদি আপনি কোন কিছুতে অনুমতি খোলেন না এবং আপনি তাদের আবার সীমাবদ্ধ করতে পারার আগে, আপনার স্ক্রিপ্টটি মারা যায়।


9
2018-05-19 16:46



ইহা আকর্ষণীয়. আমি একটি স্ক্রিপ্ট খোলা অনুমতি সম্পর্কে উদ্বিগ্ন না যে অকাল মৃত্যুবরণ করে কিন্তু আমি যে বিপজ্জনক বিবেচিত দেখতে পারে। এই কুইজের মজার অংশটি হল যে আপনি কোনও রেফারেন্স উপকরণ যেমন ম্যান বা গুগল ব্যবহার করতে পারবেন না এবং যদি আপনি সম্পূর্ণ উত্তর দিতে না পারেন তবে এটিকে জবাব দেবেন না। - egorgry
যে শুধু মূর্খ, আমি এই নিয়োগকর্তা পুনর্বিবেচনা করা হবে ... মজা (সাজানোর)। জ্ঞানের দৃঢ় ভিত্তি থাকা ভাল, তবে আইটি কাজের অর্ধেক তথ্য জানা / কোথায় / কোথায় তথ্য খুঁজে পাওয়া যায় ... আশা করা হচ্ছে যে তারা আবেদনকারীর স্কোর করার সময় বিবেচনায় নিতে যথেষ্ট দক্ষ। একটি পাশে নোট, আমি দেখতে / না / জন্য ব্যবহার set -eআসলে, আমার কাছে আপনার স্ক্রিপ্টে ত্রুটির চেক এড়ানো অলসতার কথা বলে ... তাই মনে রাখবেন যে, এই নিয়োগকর্তার সাথেও ... যদি তারা এটি ব্যবহার করে তবে তাদের স্ক্রিপ্টগুলি কেমন লাগছে, আপনি অনিবার্যভাবে বজায় রাখতে হবে ... - cpbills
চমৎকার বিন্দু @ cpbills। আমি স্ক্রিপ্টে set-e এর জন্য কোনও ব্যবহার দেখি না এবং সম্ভবত এটি আমাকে এত স্ট্যাম্প করেছে কেন। কিছু সত্যিই ভাল এবং আমি এই সব মত সত্যিই অবাক এবং এলোমেলো কারণ সব প্রশ্ন পোস্ট করতে চাই। - egorgry
আমি অনেক সিস্টেম cron কাজ এটি দেখেছি ... - Andrew


set -e নির্দিষ্ট শর্ত ব্যতীত, একটি nonzero প্রস্থান কোড সম্মুখীন হলে স্ক্রিপ্ট terminates। কয়েকটি শব্দে তার ব্যবহারগুলির বিপদগুলি সংখ্যার জন্য: এটি কীভাবে মানুষ মনে করে তা আচরণ করে না।

আমার মতে, এটি একটি বিপজ্জনক হ্যাক হিসাবে গণ্য করা উচিত যা শুধুমাত্র সামঞ্জস্যের উদ্দেশ্যে বিদ্যমান থাকে। দ্য set -e বিবৃতি এমন কোনও ভাষা থেকে শেল চালু করে না যা ব্যতিক্রম কোড নিয়ন্ত্রণ প্রবাহ ব্যবহার করে এমন ত্রুটির কোডগুলি ব্যবহার করে, এটি কেবল সেই আচরণকে অনুকরণ করার জন্য নিরলসভাবে প্রচেষ্টা করে।

গ্রেগ উলদেজের বিপদের কথা বলার অনেক কিছু আছে set -e:

দ্বিতীয় লিঙ্কটিতে, অনির্ধারিত এবং অনির্দেশ্য আচরণের বিভিন্ন উদাহরণ রয়েছে set -e

অনির্ধারিত আচরণ কিছু উদাহরণ set -e (কিছু উপরে উইকি লিংক থেকে নেওয়া):

  • সেট-ই
    এক্স = 0
    যাক যাক ++
    echo "x is $ x"
    উপরোক্ত শেল স্ক্রিপ্টটি অকালিকভাবে প্রস্থান করার কারণ হবে let x++ ফেরত 0, যা দ্বারা চিকিত্সা করা হয় let একটি falsy মান হিসাবে শব্দ এবং একটি nonzero প্রস্থান কোড পরিণত। set -e এই নোটিশ, এবং নীরবভাবে স্ক্রিপ্ট terminates।
  • সেট-ই
    [-d / opt / foo] & echo "সতর্কতা: foo ইতিমধ্যে ইনস্টল করা আছে। ওভাররাইট করবে।" > & 2
    echo "foo ইনস্টল করা হচ্ছে ..."
    

    উপরের হিসাবে প্রত্যাশিত কাজ, একটি সতর্কতা মুদ্রণ যদি /opt/foo ইতিমধ্যে বিদ্যমান।

    সেট-ই
    check_previous_install () {
        [-d / opt / foo] & echo "সতর্কতা: foo ইতিমধ্যে ইনস্টল করা আছে। ওভাররাইট করবে।" > & 2
    }
    
    check_previous_install
    echo "foo ইনস্টল করা হচ্ছে ..."
    

    উপরে, একমাত্র পার্থক্য সত্ত্বেও একটি লাইন একটি ফাংশন মধ্যে refactored হয়েছে, যদি বাতিল করা হবে /opt/foo এটির অস্তিত্ব নেই. কারণ এটি মূলত কাজ করে এমন একটি বিশেষ ব্যতিক্রম set -eএর আচরণ। কখন a && b nonzero ফেরত, এটা দ্বারা উপেক্ষা করা হয় set -e। যাইহোক, এখন এটি একটি ফাংশন, ফাংশনের প্রস্থান কোডটি সেই কমান্ডের প্রস্থান কোডের সমান এবং ফাংশনটি nonzero ফাংশন নীরবভাবে স্ক্রিপ্টটি বন্ধ করে দেবে।

  • সেট-ই
    আইএফএস = $ '\ n' পঠন-ডি '-আর-একটি config_vars <config
    

    উপরে অ্যারে পড়তে হবে config_vars ফাইল থেকে config। লেখক ইচ্ছা করতে পারে, যদি এটি একটি ত্রুটি সঙ্গে terminates config অনুপস্থিত. লেখক ইচ্ছা নাও হতে পারে, এটি চুপ করে যদি শেষ হয় config একটি নতুন লাইন শেষ না। যদি set -e তারপর এখানে ব্যবহার করা হয় নি config_vars ফাইলে সমস্ত লাইন থাকবে কিনা এটি একটি নতুন লাইনে শেষ হয়েছে কিনা।

    সুবাইল টেক্সট ব্যবহারকারী (এবং অন্যান্য টেক্সট সম্পাদক ভুলভাবে নতুন লাইন পরিচালনা করে), সতর্ক থাকুন।

  • সেট-ই
    
    উচিত _audit_user () {
        স্থানীয় গ্রুপ গোষ্ঠী = "$ (গোষ্ঠী" $ 1 ")"
        $ গ্রুপের গ্রুপের জন্য; করা
            যদি ["$ গ্রুপ" = অডিট]; তারপর ফিরে 0; ফাই
        সম্পন্ন
        ফিরে 1
    }
    
    if_audit_user "$ ব্যবহারকারী" হওয়া উচিত; তারপর
        লগার 'ব্লা'
    ফাই
    

    এখানে লেখক যুক্তিসঙ্গতভাবে যে কিছু কারণে ব্যবহারকারীর জন্য আশা হতে পারে $user বিদ্যমান নেই, তারপর groups কমান্ড ব্যর্থ হবে এবং স্ক্রিপ্টটি অকার্যকর কিছু কাজ সম্পাদন করার পরিবর্তে বাতিল হবে। তবে, এই ক্ষেত্রে set -e সমাপ্তি কার্যকর লাগে না। যদি $user কিছু কারণে পাওয়া যাবে না, স্ক্রিপ্ট বন্ধ করার পরিবর্তে, should_audit_user ফাংশন ঠিক হিসাবে ভুল তথ্য ফিরে হবে set -e কার্যকর ছিল না।

    এটি একটি শর্ত অংশ থেকে উদ্ভূত কোন ফাংশন প্রযোজ্য if বিবৃতি, কোন ব্যাপার না গভীরভাবে নিস্তেজ, কোন ব্যাপার যেখানে এটি সংজ্ঞায়িত করা হয়, আপনি চালানো এমনকি যদি কোন ব্যাপার set -e আবার ভিতরে। ব্যবহার if যে কোনো সময়ে সম্পূর্ণরূপে প্রভাব অক্ষম set -e শর্ত ব্লক সম্পূর্ণরূপে মৃত্যুদন্ড কার্যকর না হওয়া পর্যন্ত। যদি লেখক এই পিটফল সম্পর্কে সচেতন না হন বা কোনও ফাংশনকে সম্ভাব্য সমস্ত সম্ভাব্য পরিস্থিতিতে তাদের সম্পূর্ণ কল স্ট্যাকটি না জানেন তবে তারা বাগি কোড এবং সুরক্ষা সম্পর্কিত মিথ্যা ধারণা লিখবে। set -e অন্তত আংশিকভাবে দোষারোপ করা হবে।

    এমনকি লেখক এই পিটফল সম্পর্কে সম্পূর্ণরূপে সচেতন হলেও, কাজের পদ্ধতিটি একইভাবে কোড লিখতে হবে যেমনটি কেউ লিখেছেন set -eকার্যকরভাবে কার্যকর যে কম ব্যবহার নিষ্ক্রিয়; না শুধুমাত্র লেখক হিসাবে ম্যানুয়াল ত্রুটি হ্যান্ডলিং কোড লিখতে আছে না set -e প্রভাব ছিল না, কিন্তু উপস্থিতি ছিল set -e তারা তাদের করতে হবে না যে চিন্তা মধ্যে বোকা বানানো হতে পারে।

কিছু আরো ত্রুটি set -e:

  • এটা পঙ্কিল কোড উত্সাহিত করে। ত্রুটির হ্যান্ডলার সম্পূর্ণরূপে ভুলে গেছেন, আশা করি যা কিছু ব্যর্থ হয়েছে সেটি কিছু সুস্পষ্ট ভাবে ত্রুটিটির প্রতিবেদন করবে। যাইহোক, যেমন উদাহরণ সঙ্গে let x++ উপরে, এই ক্ষেত্রে হয় না। স্ক্রিপ্ট অপ্রত্যাশিতভাবে মারা গেলে, এটি সাধারণত নীরবভাবে, যা ডিবাগিং বাধা দেয়। স্ক্রিপ্টটি মারা না গেলে এবং আপনি এটির প্রত্যাশিত (পূর্ববর্তী বুলেট পয়েন্টটি দেখুন), তারপরে আপনার হাতে আরো সূক্ষ্ম এবং জঘন্য বাগ রয়েছে।
  • এটা মানুষের একটি মিথ্যা অর্থে মানুষ বাড়ে। আবার দেখুন if-কন্ডিশন বুলেট পয়েন্ট।
  • যেখানে শেল শেষ হয় শেল বা শেল সংস্করণের মধ্যে সামঞ্জস্যপূর্ণ নয়। আচরণের কারণে বশের পুরোনো সংস্করণে ভিন্নভাবে আচরণ করে এমন একটি স্ক্রিপ্টটি দুর্ঘটনাক্রমে লেখা সম্ভব set -e হচ্ছে যারা সংস্করণ মধ্যে tweaked হয়েছে।

set -e এটি একটি বিতর্কিত বিষয় এবং কিছু লোক এটির আশেপাশের বিষয়গুলির বিষয়ে সচেতন, এটির বিরুদ্ধে সুপারিশ করে, তবে কিছু অন্যদের কেবল এটি যত্ন নেওয়ার পরামর্শ দেয় যখন এটি ত্রুটিগুলি জানতে সক্ষম হয়। সুপারিশ যারা অনেক শেল স্ক্রিপ্টিং newbies আছে set -eসমস্ত স্ক্রিপ্টে ধরা-ত্রুটি অবস্থার জন্য সমস্ত, কিন্তু বাস্তব জীবনে এটি এমনভাবে কাজ করে না।

set -e শিক্ষা জন্য কোন বিকল্প নেই।


6
2018-04-27 23:06





আমি এটা বিপজ্জনক বলব কারণ সে এখন আর আপনার স্ক্রিপ্টের প্রবাহ নিয়ন্ত্রণ করবে না। যতক্ষণ স্ক্রিপ্ট আহ্বান করে তার যে কোনও আদেশ অ-শূন্য প্রদান করে স্ক্রিপ্টটি শেষ করতে পারে। তাই আপনাকে যা করতে হবে তা এমন কিছু করতে হয় যা কোন উপাদানগুলির আচরণ বা আউটপুট পরিবর্তন করে এবং আপনি মূল স্ক্রিপ্টটি বন্ধ করতে পারেন। এটি একটি শৈলী সমস্যা হতে পারে, কিন্তু এটি অবশ্যই পরিণতি আছে। যদি আপনার সেই মূল স্ক্রিপ্টটি কোনও পতাকা সেট করতে অনুমিত হয়, এবং এটি তাড়াতাড়ি শেষ হওয়ার কারণে হয় না কেন? পতাকাটি থাকা উচিত বলে মনে হয়, বা অপ্রত্যাশিত ডিফল্ট বা পুরানো মান নিয়ে কাজ করার সময় আপনি বাকি সিস্টেমটি দোষারোপ করতে শেষ করতে চান।


2
2018-05-19 18:07



সম্পূর্ণরূপে এই উত্তর দিয়ে একমত। এটা না মজ্জাগতভাবে বিপজ্জনক, কিন্তু এটি একটি অপ্রত্যাশিত প্রারম্ভিক প্রস্থান করার সুযোগ। - pboin
এটি আমাকে মনে করিয়ে দেয় যে এটি আমার একটি C ++ prof যা সবসময় আমার অ্যাসাইনমেন্ট থেকে পয়েন্টগুলি একটি প্রোগ্রামে একক এন্ট্রি পয়েন্ট / একক প্রস্থান পয়েন্ট না থাকার জন্য আকর্ষণ করে। আমি এটা সম্পূর্ণরূপে একটি 'নীতি' জিনিস ছিল, কিন্তু এই সেট-বি ব্যবসা স্পষ্টভাবে demos কিভাবে এবং কেন সম্পূর্ণরূপে নিয়ন্ত্রণ বাইরে spin পারেন demos। অবশেষে প্রোগ্রাম নিয়ন্ত্রণ এবং determinism সম্পর্কে, এবং অকাল সমাপ্তি সঙ্গে আপনি উভয় ছেড়ে দিতে। - Marcin


@ মার্সিনের উত্তরটি সম্পর্কে আরো একটি দৃঢ় উদাহরণ যা ব্যক্তিগতভাবে আমাকে বিদ্ধ করেছে, কল্পনা করুন সেখানে একটি ছিল rm foo/bar.txt আপনার স্ক্রিপ্ট কোথাও লাইন। সাধারণত কোন বড় চুক্তি যদি foo/bar.txt আসলে বিদ্যমান নেই। তবে সঙ্গে set -e এখন আপনার স্ক্রিপ্ট সেখানে প্রাথমিকভাবে শেষ হবে! উফ।


0
2018-06-22 19:00