আমি কীভাবে / অন্য বিবৃতিতে পূর্ণসংখ্যার পরিবর্তে পাঠ্য স্ট্রিংয়ের সাথে কোন ভেরিয়েবলের তুলনা করতে পারি?


24

শেল স্ক্রিপ্ট লেখার প্রক্রিয়াতে, আমি / স্ক্রিপ্টের মাঝামাঝি কোথাও কোথাও পড়ে যে বিবৃতিটি নীচের সাথে একটি সমস্যা নিয়ে চলেছি:

if [ $act -eq "add" ]
then
    read - "add or update: " $comm
    git commit -m "$comm $file"
else
    git commit -m "$act $file"
fi

প্রত্যাবর্তন ত্রুটি হচ্ছে:

./gitup: line 13: [: add: integer expression expected

এবং তারপরে বাকী স্ক্রিপ্টটি দিয়ে এগিয়ে যায়। আমি যদি সেগমেন্টটি পূর্ণসংখ্যার পরিবর্তে স্ট্রিং ইনপুটটির সাথে ভেরিয়েবলের মূল্যায়ন / তুলনা করতে পারি তবে তা কীভাবে থাকতে পারি; আমি চেষ্টা করেছি এমন আরও কয়েকটি জিনিসের মধ্যে "! =" ব্যবহার করার সময় একটি ভিন্ন ত্রুটির প্রয়োজন হয়েছিল।

উত্তর:


38

এটার মতো কিছু:

act="add"
if [[ $act = "add" ]]
then
    echo good
else
    echo not good
fi

-eqসংখ্যা তুলনা =জন্য, স্ট্রিং তুলনা জন্য ব্যবহার


ধন্যবাদ। আমি এটি চেষ্টা করেছিলাম, এবং স্ক্রিপ্টটি মুক্ত হবে, একটি কী-স্ট্রোকের প্রয়োজন ছিল, তবে সবেমাত্র পাওয়া গেছে যে এটি কোনও নিবন্ধযুক্ত সিনট্যাক্স ত্রুটির কারণে আরও নীচে হয়েছে, সুতরাং এটি পুরোপুরি কাজ করেছিল। সাহায্যের জন্য ধন্যবাদ.
tony_perkis666

3
@ জোসেফমারহী: নোট করুন যে [[]]পরীক্ষাটি বাশ নির্দিষ্ট কন্সট্রাক্ট এবং এই উদাহরণটি পসিক্সের সাথে []যেমন প্রশ্নে ব্যবহৃত হয়েছে তেমন কাজ করে। যদি দোভাষীকে স্পষ্টভাবে #!/bin/bashবা অনুরূপ হিসাবে দেওয়া হয় তবে [[]]বিষয়গুলি ছাড়াই এটি ব্যবহার করা যেতে পারে (এবং এটি বাশের বিকল্পের চেয়ে কিছুটা দ্রুত , আমি বিশ্বাস করি - এটি যে কোনওভাবেই বোতল ঘাড় হওয়া উচিত নয়), অন্যথায় এটির সাথে থাকা উচিত []। যদি কারও কাছে বাশের নির্দিষ্টকরণের প্রয়োজন না হয় তবে স্ক্রিপ্টটি দ্যাশিতে কিছুটা দ্রুত চলবে। এবং পসিক্স অন্তর্নিহিত বহনযোগ্যতা নিশ্চিত করে।
ড্যানিয়েল অ্যান্ডারসন

4

এই পদ্ধতিটিও কাজ করবে। @ গুরুর উত্তরের সাথে খুব সমান তবে ডাবল স্কোয়ার বন্ধনীগুলির প্রয়োজনীয়তা সরিয়ে দেয়।

if [ "$act" == "add" ]
then
echo "Good!"
      else
      echo "Not good!"
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.