"কখনই " -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 ]; }
(
এবং)
অপারেটরদের গোষ্ঠীর কমান্ড? যদি তারা অপ্রচলিত হয় তবে তাদের প্রতিস্থাপন কী? (২)test "$1" -a "$2"
প্রতিস্থাপন করা উচিতtest "$1" && test "$2"
, বা দ্বারা((test "$1" && test "$2"))
? আমাদের কি দরকার নেই((..))
?