বাশ ব্যবহারকারীর কাছ থেকে হ্যাঁ / কোনও প্রতিক্রিয়া প্রক্রিয়াকরণ


11

এটি খুব ভালভাবে আমার পক্ষে বোকামি হতে পারে। আমি আমার বাশ স্ক্রিপ্টের মধ্যে হ্যাঁ / না, সত্য / মিথ্যা প্রতিক্রিয়াগুলি গ্রহণ করতে চাই:

test.sh

#!/bin/bash

ARGUMENT=$1

echo User passed in $ARGUMENT

OPTARG=${ARGUMENT:0:1}

if [[ "$OPTARG" -eq 0 ]] || [[ "${OPTARG^^}" == "N" ]]; then
    echo Decline
elif [[ "$OPTARG" -eq 1 ]] || [[ "${OPTARG^^}" == "Y" ]]; then
    echo Accept
else
    echo Invalid argument
fi

এখানে কিছু নমুনা ফলাফল:

./test.sh 0

User passed in 0
Decline

./test.sh 1

User passed in 1
Accept

./test.sh 2

User passed in 2
Invalid argument

./test.sh নং

User passed in No
Decline

এখন হোঁচট খাচ্ছে। কেন যে [[ "${OPTARG^^}" == "N" ]]কোনও স্ট্রিংয়ের জন্য সত্য ফিরে আসছে !?

হ্যাঁ

User passed in Yes
Decline

./test.sh এই শোল্ডনটম্যাচ

User passed in ThisShouldNotMatch
Decline

আপনি এই উদ্ধৃতি যদি কি হয়? OPTARG = "$ G তর্ক: 0: 1}"
মাইকজার্ভ

1
কিছু মনে করো না. গোল্ডিলোকস ঠিক আছে।
মাইকজার্ভ

উত্তর:



8

যদিও আপনার কোডে সমস্যা হয়েছে ভাল ব্যাখ্যা দ্বারা স্বর্ণকেশ , আমি বলার অপেক্ষা রাখে না না বিরোধিতা করতে পারেন যে আপনার কোড অযথা দীর্ঘ। আপনি এটি অনেক সহজ করতে পারেন।

নিম্নলিখিতটি আপনার পছন্দসই কোডের সমতুল্য:

echo User passed in $1
if [[ "$1" == [nN0]* ]]; then      # First argument starts with either n, N, or 0
    echo Decline
elif [[ "$1" == [yY1]* ]]; then    # First argument starts with either y, Y, or 1
    echo Accept
else
    echo Invalid argument
fi

এছাড়াও আপনি উল্লেখ করতে চাইতে পারেন শর্তসাপেক্ষ নির্মান মধ্যে ম্যানুয়াল


ধন্যবাদ, দেবনুল আমি ভবিষ্যতের স্ক্রিপ্টগুলিতে অবশ্যই এই কৌশলটি ব্যবহার করব! আপনার উত্তরটি আমাকে গ্রহণ করা উচিত কিনা তা নিয়ে আমি ছিন্ন ছিটিয়েছি, তবে আমি মনে করি যে সোনারিলকসের জবাবের পার্থক্য অন্যদের জন্য সহায়ক হতে পারে।
i_grok

@ i_grok আমি আমার উত্তরে উল্লেখ করেছিলাম যে গোল্ডিলকসের উত্তর সমস্যার দিকে ইঙ্গিত করে। আমি কেবল একটি বিকল্প পদ্ধতি উপস্থাপন করেছি যা আরও পাঠযোগ্য বলে মনে হচ্ছে । সমস্যা সমাধানের একাধিক পদ্ধতির বিষয়টি দেখতে দেখতে ভাল। কোন উত্তর গৃহীত হয়েছে তা অপেক্ষাকৃত নগণ্য বিষয়।
ডিভনুল

6

এছাড়াও আপনি ব্যবহার করতে পারেন case

read -p 'Do you want to Continue (yes/no?): ' 
case $REPLY in
       [yY]|[yY][eE][sS]) echo Accept             ;;
           [nN]|[nN][oO]) echo Decline            ;;
                       *) echo "Invalid argument" ;;
esac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.