আমি বিবৃতি থাকলে শেলের মধ্যে একাধিক শর্ত একত্রিত করতে চাই এবং সংমিশ্রণটি অস্বীকার করব। শর্তগুলির একটি সহজ সংমিশ্রণের জন্য আমার কাছে নিম্নলিখিত কার্য কোডটি রয়েছে:
if [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ; then
# do stuff with the files
fi
এটি কাজ করে। যদি আমি এটিকে অবহেলা করতে চাই তবে আমি নিম্নলিখিত কার্য কোডটি ব্যবহার করতে পারি:
if ! ( [ -f file1 ] && [ -f file2 ] && [ -f file3 ] ) ; then
echo "Error: You done goofed."
exit 1
fi
# do stuff with the files
এটিও প্রত্যাশার মতো কাজ করে। যাইহোক, এটি আমার কাছে ঘটে যে আমি প্রথম বন্ধনীগুলি সেখানে কী করছে তা আমি জানি না। আমি সেগুলি কেবল গোষ্ঠীকরণের জন্য ব্যবহার করতে চাই , তবে এটি কি আসলে একটি সাবশেল তৈরি করছে? (আমি কীভাবে বলতে পারি?) যদি তা হয় তবে সাবস্কেল তৈরি না করে শর্তগুলি গোছানোর কোনও উপায় আছে কি?
if [[ ! -f file1 ]] && [[ ! -f file2 ]]; then
if [ ! 1 -eq 2 ] && [ ! 2 -eq 3 ]; then echo yep; fi
এবং এটি কার্যকর। আমি সবসময় অভ্যাসের বিষয় হিসাবে ডাবল-ব্রেস দিয়ে পরীক্ষা লিখি। এছাড়াও, এটি নিশ্চিত না করার জন্য bash
, আমি আরও পরীক্ষা করেছি if /bin/test ! 1 -eq 2 && /bin/test ! 2 -eq 3 ; then echo yep; fi
এবং এটি সেভাবে কাজ করে।
[ ! -e file/. ] && [ -r file ]
ডিরেক্টরি বাদ দেবে। আপনার পছন্দ মত এটিকে অবহেলা করুন। অবশ্যই, এটি কি -d
করে।
if ! [ -f file1 ] || ! [ -f file 2 ] || ! [ -f file3 ] ; then
তবে আমি আরও সাধারণ উত্তর চাই।