`[a with সহ কখনই` -a` বা `-o` অপারেটর ব্যবহার করবেন না`


11

স্টাফেন চেজেলাস লিখেছেন:

কয়েকটি বিধি মত

  • সর্বদা উদ্ধৃতি ভেরিয়েবল
  • কখনও -aবা -oঅপারেটর ব্যবহার করবেন না (বেশ কয়েকটি [কমান্ড &&এবং ||শেল অপারেটর ব্যবহার করুন)

[POSIX শেল দিয়ে নির্ভরযোগ্য করুন ।

"কখনই " -aবা -oঅপারেটর ব্যবহার করবেন না "?

আমি কীভাবে "বেশ কয়েকটি [কমান্ড &&এবং ||শেল অপারেটর ব্যবহার করতে পারি )"?

উত্তর:


13

"কখনই " -aবা -oঅপারেটর ব্যবহার করবেন না "?

কারণ তারা অবিচ্ছিন্ন হতে পারে এবং তাই তারা পসিক্স-অনুগত নয় :

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

test "$1" -a "$2"

এই হিসাবে লেখা উচিত:

test "$1" && test "$2"

আমি কীভাবে "বেশ কয়েকটি [কমান্ড &&এবং ||শেল অপারেটর ব্যবহার করতে পারি )"?

একাধিক পরীক্ষা করে এবং চালিত অপারেটরগুলি ব্যবহার করে তাদের চেইন করে; উদাহরণ স্বরূপ:

[ 0 -eq 0 -a \( 0 -eq 1 -o 1 -eq 1 \) ]

সমতুল্য হিসাবে আবার লেখা যেতে পারে:

[ 0 -eq 0 ] && ([ 0 -eq 1 ] || [ 1 -eq 1 ])

বা, আরও ভাল:

[ 0 -eq 0 ] && { [ 0 -eq 1 ] || [ 1 -eq 1 ]; }

ধন্যবাদ। (1) "'(' এবং ')' অপারেটরগুলি অপ্রচলিত হিসাবে চিহ্নিত হয়েছে"। হয় (এবং )অপারেটরদের গোষ্ঠীর কমান্ড? যদি তারা অপ্রচলিত হয় তবে তাদের প্রতিস্থাপন কী? (২) test "$1" -a "$2"প্রতিস্থাপন করা উচিত test "$1" && test "$2", বা দ্বারা ((test "$1" && test "$2"))? আমাদের কি দরকার নেই ((..))?
টিম

@ টিম আপডেটটি দেখুন। (1) হ্যাঁ - আপনি ()এবং {}প্রতিস্থাপন হিসাবে ব্যবহার করতে পারেন । (২) প্রথমটি; (())পাটিগণিতের বিস্তারের জন্য ব্যবহৃত হয়, এখানে আপনি পরীক্ষার শৃঙ্খলার প্রস্থান স্থিতি পরীক্ষা করতে চান, সুতরাং পরীক্ষাগুলি একটি সাব- ()শেল বা বর্তমান শেলের মধ্যে গ্রুপ করুন {}
কোস

ধন্যবাদ। আমি মনে করি আমার প্রশ্নগুলি এই পোস্টের বাইরে যেতে পারে। তাই আমি তাদের একটি নতুন পোস্টে পোস্ট করি।
টিম

1
ব্যবহার করতে একমাত্র কারণ @Tim (এবং )অপারেটরদের যখন আপনি ব্যবহার করছেন হয় -aবা -o। যেহেতু পরেরগুলি অপ্রচলিত তাই স্পষ্টতই পূর্বেরগুলির আর প্রয়োজন হয় না।
বারমার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.