নীচে কমান্ড দিয়ে কি ভুল আছে
awk 'BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}'
আউটপুট:
awk: BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}
awk: ^ syntax error
নীচে কমান্ড দিয়ে কি ভুল আছে
awk 'BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}'
আউটপুট:
awk: BEGIN {a = 5;b=6; (a==b)? print "a==b" : print "a!=b"}
awk: ^ syntax error
উত্তর:
অন্যান্য অনেক প্রোগ্রামিং ভাষার মত, awkপ্রকাশ এবং বিবৃতি মধ্যে পার্থক্য। বৃহত্তর দ্বারা, বিবৃতিগুলি এমন ক্রিয়া হয় যা সম্পাদিত হয়, যখন প্রকাশগুলি হ'ল গণনা যা ফলস্বরূপ একটি মান।
awkসি এর সমমনা অংশের মতো ত্রিভূমি অপারেটরটি নিজেই একটি প্রকাশ (বিবৃতি নয়) যা অন্য তিনটি এক্সপ্রেশন হিসাবে প্রত্যাশা করে expr1 ? expr2 : expr3। printএকটি বিবৃতি। যেখানে অভিব্যক্তিটির জন্য ডাকা হয়েছিল সেখানে এটি ব্যবহার করা যাবে না, সুতরাং বাক্য গঠন ত্রুটি।
আপনি চেষ্টা করেছেন awk 'BEGIN {a = 5;b=6; print (a==b)? "a==b" : "a!=b"}'?
একটি অভিব্যক্তি যেখানে বলা হয়েছে এমন একটি বিবৃতি ব্যবহার করা কোনও অর্থবোধ করতে পারে না। বিবৃতিগুলি মান দেয় না। সুতরাং আপনার যখন আছে condition ? stmt1 : stmt2, টের্নারি অপারেটর দ্বারা গণনা করা মানটি কী? যদি conditionমিথ্যা হয় stmt2তবে এটির মান হওয়া উচিত তবে এটি কোনও মান নয়, এটি একটি ক্রিয়া।
x = if true; print "yes"; else; print "no"; end
(cond1) ? printf("str1") : printf("str2")? তিনবারীর সূক্ষ্মতা ব্যাখ্যা করার জন্য ধন্যবাদ। সম্পাদনা: প্রকৃতপক্ষে, নিম্নলিখিত কুরুচিপূর্ণ নির্মাণ ব্যবহার করে: str = (cond1) ? sprintf("str1") : sprintf("str2"); printf("%s", str)কাজ করে, তবে এই মুহূর্তে এটি প্রায় কমপ্যাক্ট এবং / অন্য :) ব্যবহার করার জন্য আরও স্পষ্ট