|| এর ক্ষেত্রে দুটি কমান্ড চালান বা &&


11

আমি && এবং || সম্পর্কে পড়েছি এবং আমি মিথ্যা মামলায় দুটি কমান্ড চালাতে চাই।

আমি চেষ্টা করেছি ;তবে তা সর্বদা চলছে । আমি এটিকে কোঁকড়া ধনুর্বন্ধনীগুলিতে রাখার চেষ্টা করেছি { command1; command2 }তবে এর ফলে সিনট্যাক্স ত্রুটি হয়।

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

command && echo "Ok, continuing" || echo "Check internet connection"; exit 1

কোনও ইন্টারনেট সংযোগ না থাকলে কেবল এটিই বেরিয়ে আসে।


1
এটি একটি সাধারণ টাইপোগ্রাফিক ত্রুটি বলে মনে হচ্ছে। একটি উপায় আরো আকর্ষণীয় প্রশ্ন জিজ্ঞাসা করতে পার্থক্য হল ()এবং {}
এডউইনকস্ল

উত্তর:


27

পেরেনস ব্যবহার করে কমান্ডগুলি একটি সাবশেলে রাখে যা সর্বদা আপনি যা চান তা নয়। বিকল্পভাবে, কোঁকড়া ধনুর্বন্ধনী ব্যবহার করুন:

command && echo "Ok, continuing" || { echo "Check internet connection"; exit 1; }

এখানে কৌশলটি হ'ল প্যারেনগুলির মতো নয়, বন্ধনীগুলিতে চূড়ান্ত কমান্ডটি অনুসরণ করা আবশ্যক ;

সেমিকোলন বা নিউলাইন কেন প্রয়োজন

একটি কোঁকড়া ধনুর্বন্ধনী কমান্ডের জন্য একটি বৈধ যুক্তি। উদাহরণস্বরূপ, এখানে যুক্তি হিসাবে একটি কোঁকড়া ধনুর্বন্ধনী echo:

$ echo }
}

ফলস্বরূপ, শেলটি যদি দেখতে পায়:

{ command1; command2 }

শেলটি কমান্ড 1 কে কোনও আর্গুমেন্ট এবং কমান্ড 2 অক্ষরের সমন্বিত একটি যুক্তি হিসাবে ব্যাখ্যা করে }। একটি কোঁকড়া ধনুর্বন্ধনী }কেবলমাত্র একটি সেমিকোলন বা নিউলাইন অনুসরণ করে যদি একটি গ্রুপিং বন্ধ হিসাবে ব্যাখ্যা করা হয়। উপরের কাজটি করতে:

{ command1; command2; }

Subshells মধ্যে পার্থক্য {...}এবং(...)

নিম্নলিখিত x10 টিতে সেট করুন তবে echoকমান্ডটি চালানোর আগে সেটিংটি ভুলে গেছে :

$ x=0; false || ( echo Hello; x=10 )
Hello
$ echo $x
0

কোঁকড়া ধনুর্বন্ধনী সঙ্গে, বিপরীতে, সেটিং x=10মনে রাখা হয়:

$ x=0; false || { echo Hello; x=10; }
Hello
$ echo $x
10

পার্থক্যটি হ'ল সাবশেলে পরিবর্তনশীল অ্যাসাইনমেন্টগুলি সাব-শেল শেষ হওয়ার পরে বেঁচে থাকে না।

নথিপত্র

থেকে man bash:

(তালিকা)

তালিকাটি একটি সাব-শেল পরিবেশে কার্যকর করা হয় (নীচে কম্যান্ড এক্সিকিউশন এনভায়রনমেন্ট দেখুন)। পরিবর্তনশীল অ্যাসাইনমেন্ট এবং বিল্টিন কমান্ডগুলি যা শেলের পরিবেশকে প্রভাবিত করে কমান্ডটি সম্পূর্ণ হওয়ার পরে কার্যকর হয় না। রিটার্নের স্থিতি হল তালিকার প্রস্থান স্থিতি।

{তালিকা; }

তালিকাটি কেবল বর্তমান শেল পরিবেশে কার্যকর করা হয়। তালিকাটি অবশ্যই একটি নতুন লাইন বা সেমিকোলন দিয়ে শেষ করতে হবে। এটি একটি গ্রুপ কমান্ড হিসাবে পরিচিত। রিটার্নের স্থিতি হল তালিকার প্রস্থান স্থিতি। মনে রাখবেন যে মেটাচার্যাক্টারের বিপরীতে (এবং), {এবং reserved সংরক্ষিত শব্দ এবং অবশ্যই সেখানে আবশ্যক যেখানে একটি সংরক্ষিত শব্দকে স্বীকৃতি দেওয়ার অনুমতি দেওয়া হয়েছে। যেহেতু তারা কোনও শব্দের বিরতি সৃষ্টি করে না, তাই তাদের অবশ্যই হোয়াইটস্পেস বা অন্য শেল মেটাচারাক্টারের দ্বারা তালিকা থেকে আলাদা করতে হবে।

[সামনে জোর দাও]

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