বাশে দুটি স্ট্রিং তুলনা করা


13

আমি একটি স্ক্রিপ্ট তৈরি করতে চাই যা ভেরিয়েবল সেট করতে rmdirব্যবহার করে পাসওয়ার্ড দিয়ে নিশ্চিত করার পরে একটি ডিরেক্টরি মুছে readদেয়।

এখনও পর্যন্ত আমার কাছে এটি রয়েছে:

#!/bin/bash -x
echo "Password:"
read -t 30 S1
    S2='55555'
if [ $S1=$S2 ]; then
    rmdir /home/william/test
else
    echo "fail"
sleep 10
fi

সুতরাং, আমার -xএটি ডিবাগ করার চেষ্টা করতে হবে তবে প্রতিবার স্ক্রিপ্টটি হয় প্রতিধ্বনিত করতে ব্যর্থ হয় (যদি আমি পাসওয়ার্ডটি ভুল করে রাখি) অথবা এটি প্রয়োজনীয় ডিরেক্টরি সরিয়ে ফেলবে না।

কারও কাছে যদি এমন একটি পরিবর্তনযোগ্য স্ক্রিপ্ট থাকে যা আমি ব্যবহার করতে পারি বা আপনি বর্তমান স্ক্রিপ্টের সাথে সমস্যাগুলি চিহ্নিত করতে পারেন তবে দুর্দান্ত would

উত্তর:


17

এই দুটি স্ট্রিং ( S1এবং S2) ব্যবহার করে তুলনা করার সঠিক উপায় ifহ'ল:

if [ "$S1" = "$S2" ]

এক্ষেত্রে ব্যবহারের জায়গাগুলিতে কৃপণ হয়ে উঠবেন না।

দেখুন: http://tldp.org/LDP/Bash-Beginners- Guide/ html / sect_07_01.html


টিএলডিপি কোনও খাঁটি সাইট নয় কারণ এতে প্রচুর অসঙ্গতি এবং ত্রুটি রয়েছে। আমি পরামর্শ দেব যে আমরা এটি একটি রেফারেন্স হিসাবে ব্যবহার করি না।
কোডফোরস্টার

6

বাশ স্ক্রিপ্টিংয়ে আপনাকে নীচের পদ্ধতির সাথে দুটি ভেরিয়েবলের তুলনা করতে হবে।

if [ "var1" != "var2" ]; then
  Do something
fi;

স্পেস গুরুত্বপূর্ণ


4

আপনি জিএনইউ ব্যবহার করতে পারেন test, উদাহরণস্বরূপ:

test s1 = s2 && echo Equal || echo Not equal

আপনার প্রসঙ্গে, এটি হ'ল:

test "$S1" = "$S2" && rmdir -v /home/william/test
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.