বাশ-এ, কোনও কমান্ড বা ওরফে "কী আপনি নিশ্চিত [ওয়াই / এন]" যুক্ত করবেন?


228

এই বিশেষ ক্ষেত্রে, আমি বাশের জন্য একটি নিশ্চিতকরণ যুক্ত করতে চাই

তুমি কি নিশ্চিত? [Y / N]

মার্চুরিয়ালের জন্য hg push ssh://username@www.example.com//somepath/morepath, যা আসলে একটি উপনাম। এটি অর্জনের জন্য কি কোনও মানক কমান্ড আছে যা উফের সাথে যুক্ত হতে পারে?

কারণ যে hg pushএবং hg outঅনুরূপ শব্দ করতে পারেন এবং কখনো কখনো যখন আমি চাই hgoutrepo, আমি accidentlly টাইপ করতে পারেন hgpushrepo(উভয় alias লেখা হয়)।

আপডেট করুন: এটা ভালো কিছু হতে পারে একটি বিল্ট-ইন যেমন অন্য কমান্ড দিয়ে কমান্ড প্রয়োগ করুন: confirm && hg push ssh://...যে মহান ... মাত্র একটি কমান্ড যে জন্য একটি অনুরোধ করতে পারেন হতে চাই yesবা noআর যদি বাকি অগ্রসর yes


1
আপনি সম্ভবত একটি উপনামের পরিবর্তে কোনও ফাংশন ব্যবহার করতে চাইবেন । থেকে info bash: "প্রায় প্রতিটি কাজের জন্য, শেল ফাংশনগুলি এলিয়াসগুলির চেয়ে বেশি পছন্দ করা হয়।"
পরবর্তী বিজ্ঞপ্তি না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

সত্যি? এমনকি ls -lবা পছন্দ মত জন্য rm -i?
অবিচ্ছিন্নতা

5
জন্য প্রায় প্রত্যেক না যে । যাইহোক, কখনও ভালো কিছু করবেন না alias rm='rm -i'। একদিন, যখন আপনার সবচেয়ে বেশি প্রয়োজন হবে, উপনামটি সেখানে থাকবে না এবং boom!গুরুত্বপূর্ণ কিছু হারিয়ে যাবে।
পরবর্তী বিজ্ঞপ্তি না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

অপেক্ষা করুন, যদি আপনার জন্য উপনাম না থাকে তবে আপনিও rm -iশেল স্ক্রিপ্টের সাথে গণনা করতে পারবেন না। সুতরাং আপনি কি সবসময় টাইপ rm -iকরেন?
অবিচ্ছিন্নতা

8
এটা অভ্যাস সম্পর্কে । আপনি আমার আগের মন্তব্যের মতো একটি উপমা তৈরি করতে পারেন এবং টাইপ করার rmএবং -iআচরণের প্রত্যাশা করার অভ্যাসে থাকতে পারেন , তবে একদিন উপনামটি নেই (কোনও কারণে এটি সেট না হয়ে সেট হয়ে যায় না বা আপনি কোনও আলাদা সিস্টেমে রয়েছেন) ) এবং আপনি টাইপ করুন rmএবং তা নিশ্চিত হয়েই পদার্থগুলি মুছতে অবিলম্বে এগিয়ে যায়। ওহো! তবে, যদি আপনি কোনও উপন্যাসটি করেন alias askrm='rm -i'তবে আপনি ঠিকই থাকবেন, যেহেতু আপনি একটি "কমান্ড পাওয়া যায়নি" ত্রুটি পেয়েছিলেন।
পরবর্তী বিজ্ঞপ্তি না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

উত্তর:


332

এই আরো কম্প্যাক্ট এবং ফরম বহুমুখী হয় হামিশ এর উত্তর । তারা আপার এবং লোয়ার কেসের বর্ণগুলির কোনও মিশ্রণ পরিচালনা করে:

read -r -p "Are you sure? [y/N] " response
case "$response" in
    [yY][eE][sS]|[yY]) 
        do_something
        ;;
    *)
        do_something_else
        ;;
esac

বা, বাশ> = সংস্করণ 3.2 এর জন্য:

read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]
then
    do_something
else
    do_something_else
fi

দ্রষ্টব্য: যদি $responseখালি স্ট্রিং হয় তবে এটি একটি ত্রুটি দেয়। ফিক্স করার জন্য, শুধুমাত্র উদ্ধৃতি চিহ্ন যোগ করুন: "$response"। - সর্বদা স্ট্রিংযুক্ত ভেরিয়েবলগুলিতে ডাবল উদ্ধৃতি ব্যবহার করুন (উদাহরণস্বরূপ: "$@"পরিবর্তে ব্যবহার করতে পছন্দ করুন $@)।

বা, বাশ 4.x:

read -r -p "Are you sure? [y/N] " response
response=${response,,}    # tolower
if [[ "$response" =~ ^(yes|y)$ ]]
...

সম্পাদনা:

আপনার সম্পাদনার প্রতিক্রিয়া হিসাবে, confirmআপনি আমার উত্তরের প্রথম সংস্করণের উপর ভিত্তি করে একটি কমান্ড কীভাবে তৈরি এবং ব্যবহার করতে চান তা এখানে (এটি অন্য দুটির সাথে একইভাবে কাজ করবে):

confirm() {
    # call with a prompt string or use a default
    read -r -p "${1:-Are you sure? [y/N]} " response
    case "$response" in
        [yY][eE][sS]|[yY]) 
            true
            ;;
        *)
            false
            ;;
    esac
}

এই ফাংশনটি ব্যবহার করতে:

confirm && hg push ssh://..

অথবা

confirm "Would you really like to do a push?" && hg push ssh://..

9
প্রকৃতপক্ষে এটি বর্তমান পরীক্ষার জন্য [ওয়াই / এন] হওয়া উচিত এবং [ওয়াই / এন] হওয়া উচিত না।
সাইমন এ। ইউগস্টার

উল্লেখযোগ্য যে উল্লেখ করে আপনি not equal toদ্বিতীয় উদাহরণটি পরীক্ষা করতে চান তবে আপনার $responseভেরিয়েবলটি cast ালাই করা উচিত । উদাহরণ: if [[ ! $response =~ ^([yY][eE][sS]|[yY])$ ]]
জোও কুনহা

@ জোওকুনহা: =~রেজেক্স ম্যাচ অপারেটর হওয়ায় এটি "সমান নয়" এর চেয়ে "মিলবে না" ।
পরবর্তী বিজ্ঞপ্তি না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

@ ডেনিস উইলিয়ামসন সঠিক, আমি এটাই বোঝানোর চেষ্টা করেছি। কোনও কারণে আমার মন্তব্য সম্পাদনা করতে পারছি না।
জোও কুনহা

6
দুর্দান্ত সাধারণ উদ্দেশ্য হ্যাঁ / কোনও কাজ নয় । একটি প্রম্পটকে শক্তিশালী করে এবং বিকল্পভাবে 'y' বা 'n' ডিফল্ট তৈরি করে।
wkw

19

এখানে আপনি চান প্রায় একটি স্নিপেট। কীভাবে তর্কগুলি ফরোয়ার্ড করবেন তা আমাকে খুঁজে বের করুন।

read -p "Are you sure you want to continue? <y/N> " prompt
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]
then
  # http://stackoverflow.com/questions/1537673/how-do-i-forward-parameters-to-other-command-in-bash-script
else
  exit 0
fi

জন্য yes | command name hereনজর রাখুন :)


13

নিশ্চিতকরণগুলি সহজেই ক্যারেজ রিটার্ন সহ বাইপাস করা হয় এবং বৈধ ইনপুটটির জন্য ক্রমাগত প্রম্পট করা আমার পক্ষে দরকারী।

এটি সহজ করার জন্য এখানে একটি ফাংশন। "অবৈধ ইনপুট" লাল মধ্যে প্রদর্শিত হবে যদি Y | N না পাওয়া যায় এবং ব্যবহারকারীকে আবার অনুরোধ করা হয়।

prompt_confirm() {
  while true; do
    read -r -n 1 -p "${1:-Continue?} [y/n]: " REPLY
    case $REPLY in
      [yY]) echo ; return 0 ;;
      [nN]) echo ; return 1 ;;
      *) printf " \033[31m %s \n\033[0m" "invalid input"
    esac 
  done  
}

# example usage
prompt_confirm "Overwrite File?" || exit 0

আপনি একটি আর্গুমেন্ট পাস করে ডিফল্ট প্রম্পট পরিবর্তন করতে পারেন


12

'হ্যাঁ' এর এই রূপগুলি স্পষ্টভাবে পরীক্ষা করা এড়াতে আপনি নিয়মিত অভিব্যক্তি দিয়ে ব্যাশ নিয়মিত এক্সপ্রেশন অপারেটর '= ~' ব্যবহার করতে পারেন:

read -p "Are you sure you want to continue? <y/N> " prompt
if [[ $prompt =~ [yY](es)* ]]
then
(etc...)

ব্যবহারকারী ইনপুটটি 'y' বা 'Y' দিয়ে শুরু হয় এবং শূন্য বা তার বেশি 'এস'র পরে হয় কিনা তা পরীক্ষা করে।


5

এটি হ্যাক হতে পারে:

প্রশ্ন হিসাবে ইউনিক্স / বাশ-এ "xargs -p" কোনও কমান্ড চালানোর আগে নিশ্চিতকরণের জন্য অনুরোধ করার একটি ভাল উপায়?

আমরা xargsকাজটি করতে ব্যবহার করতে পারি:

echo ssh://username@www.example.com//somepath/morepath | xargs -p hg push

অবশ্যই, এটি একটি উপন্যাসের মতো সেট করা হবে hgpushrepo

উদাহরণ:

$ echo foo | xargs -p ls -l
ls -l foo?...y
-rw-r--r--  1 mikelee    staff  0 Nov 23 10:38 foo

$ echo foo | xargs -p ls -l
ls -l foo?...n

$

4

আপনার / ইত্যাদি / বাশার্ক ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করুন। এই স্ক্রিপ্টটি "কনফার্ম" নামে একটি উপন্যাসের পরিবর্তে একটি বাসিন্দা "ফাংশন" যুক্ত করে।


function confirm( )
{
#alert the user what they are about to do.
echo "About to $@....";
#confirm with the user
read -r -p "Are you sure? [Y/n]" response
case "$response" in
    [yY][eE][sS]|[yY]) 
              #if yes, then execute the passed parameters
               "$@"
               ;;
    *)
              #Otherwise exit...
              echo "ciao..."
              exit
              ;;
esac
}

খুশী হলাম। কিছু ছোট সংশোধন, যদিও: আপনার চারপাশে ডাবল-কোট লাগানো উচিত $responseএবং $@ভুলগুলি এড়াতে কিছু অপ্রয়োজনীয় সেমিকোলন রয়েছে এবং *শর্তটি ফিরে আসা উচিত, প্রস্থান না করেই ।
গর্ডন ডেভিসন

কেবল স্পষ্ট করে বলতে গেলে, কিছু বিবৃতি শেষে এটি একক অর্ধিকোলন যা অপ্রয়োজনীয়।
পরবর্তী বিজ্ঞপ্তি না হওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

4

এটি কিছুটা ছোটও হতে পারে তবে আমার নিজের ব্যক্তিগত ব্যবহারের জন্য এটি দুর্দান্ত কাজ করে

read -n 1 -p "Push master upstream? [Y/n] " reply; 
if [ "$reply" != "" ]; then echo; fi
if [ "$reply" = "${reply#[Nn]}" ]; then
    git push upstream master
fi

read -n 1শুধু একটি অক্ষর পড়ে। প্রবেশের দরকার নেই। যদি এটি 'এন' বা 'এন' না হয় তবে এটি 'ওয়াই' বলে ধরে নেওয়া হয়। শুধু এন্টার টিপানোর অর্থ ওয়াইও।

(আসল প্রশ্ন হিসাবে: একটি বাশ স্ক্রিপ্ট তৈরি করুন এবং আপনার উলামের পরিবর্তে সেই স্ক্রিপ্টের দিকে ইশারা করার আগে পরিবর্তিত করুন)


সংক্ষিপ্ত এবং মিষ্টি, ঠিক আমার যা প্রয়োজন ছিল। ধন্যবাদ!
রায়ম 1111

3
read -r -p "Are you sure? [Y/n]" response
  response=${response,,} # tolower
  if [[ $response =~ ^(yes|y| ) ]] || [[ -z $response ]]; then
      your-action-here
  fi

সুতরাং একটি স্থান অক্ষর মানে হ্যাঁ?
Xen2050

'হ্যাঁ বা y' বাদে সমস্তই ক্রিয়াকলাপটি নিশ্চিত করবে, সুতরাং আপনি ঠিক বলেছেন! @ xen2050
সেরজিওআরাউজো

3

কোন টিপুন প্রবেশের প্রয়োজন

এখানে একটি দীর্ঘ, কিন্তু পুনরায় ব্যবহারযোগ্য এবং মডুলার পদ্ধতির:

  • প্রত্যাশা 0= হ্যাঁ এবং 1= না
  • কোনও টিপুন প্রবেশের দরকার নেই - কেবল একটি একক অক্ষর
  • enterডিফল্ট পছন্দটি গ্রহণ করতে টিপতে পারেন
  • নির্বাচনকে বাধ্য করার জন্য ডিফল্ট পছন্দটি অক্ষম করতে পারে
  • উভয় zshএবং জন্য কাজ করে bash

এন্টার টিপে "না" এ ডিফল্ট করা হচ্ছে

নোট করুন যে Nমূলধন হয়। ডিফল্ট গ্রহণ করে এন্টার টিপুন:

$ confirm "Show dangerous command" && echo "rm *"
Show dangerous command [y/N]?

এছাড়াও নোট করুন, এটি [y/N]?স্বয়ংক্রিয়ভাবে সংযোজন করা হয়েছিল। ডিফল্ট "না" স্বীকৃত, তাই কিছুই প্রতিধ্বনিত হয় না।

বৈধ প্রতিক্রিয়া না দেওয়া পর্যন্ত পুনরায় প্রম্পট করুন:

$ confirm "Show dangerous command" && echo "rm *"
Show dangerous command [y/N]? X
Show dangerous command [y/N]? y
rm *

এন্টার টিপে "হ্যাঁ" এ ডিফল্ট করা হচ্ছে

নোট করুন যে Yমূলধনযুক্ত:

$ confirm_yes "Show dangerous command" && echo "rm *"
Show dangerous command [Y/n]?
rm *

উপরে, আমি সবেমাত্র এন্টার টিপলাম, সুতরাং কমান্ডটি দৌড়ে গেল।

কোনও ডিফল্ট নেই enter- প্রয়োজন yবাn

$ get_yes_keypress "Here you cannot press enter. Do you like this"
Here you cannot press enter. Do you like this [y/n]? k
Here you cannot press enter. Do you like this [y/n]?
Here you cannot press enter. Do you like this [y/n]? n
$ echo $?
1

এখানে, 1বা মিথ্যা ফিরিয়ে দেওয়া হয়েছিল। কোনও মূলধন নোট করুন[y/n]?

কোড

# Read a single char from /dev/tty, prompting with "$*"
# Note: pressing enter will return a null string. Perhaps a version terminated with X and then remove it in caller?
# See https://unix.stackexchange.com/a/367880/143394 for dealing with multi-byte, etc.
function get_keypress {
  local REPLY IFS=
  >/dev/tty printf '%s' "$*"
  [[ $ZSH_VERSION ]] && read -rk1  # Use -u0 to read from STDIN
  # See https://unix.stackexchange.com/q/383197/143394 regarding '\n' -> ''
  [[ $BASH_VERSION ]] && </dev/tty read -rn1
  printf '%s' "$REPLY"
}

# Get a y/n from the user, return yes=0, no=1 enter=$2
# Prompt using $1.
# If set, return $2 on pressing enter, useful for cancel or defualting
function get_yes_keypress {
  local prompt="${1:-Are you sure} [y/n]? "
  local enter_return=$2
  local REPLY
  # [[ ! $prompt ]] && prompt="[y/n]? "
  while REPLY=$(get_keypress "$prompt"); do
    [[ $REPLY ]] && printf '\n' # $REPLY blank if user presses enter
    case "$REPLY" in
      Y|y)  return 0;;
      N|n)  return 1;;
      '')   [[ $enter_return ]] && return "$enter_return"
    esac
  done
}
    
# Credit: http://unix.stackexchange.com/a/14444/143394
# Prompt to confirm, defaulting to NO on <enter>
# Usage: confirm "Dangerous. Are you sure?" && rm *
function confirm {
  local prompt="${*:-Are you sure} [y/N]? "
  get_yes_keypress "$prompt" 1
}    

# Prompt to confirm, defaulting to YES on <enter>
function confirm_yes {
  local prompt="${*:-Are you sure} [Y/n]? "
  get_yes_keypress "$prompt" 0
}

2

ঠিক আছে, এখানে আমার সংস্করণটি confirm, জেমসের একটি থেকে পরিবর্তিত:

function confirm() {
  local response msg="${1:-Are you sure} (y/[n])? "; shift
  read -r $* -p "$msg" response || echo
  case "$response" in
  [yY][eE][sS]|[yY]) return 0 ;;
  *) return 1 ;;
  esac
}

এই পরিবর্তনগুলি হ'ল:

  1. localপরিবর্তনশীল নামগুলি সংঘর্ষ থেকে আটকাতে ব্যবহার করুন
  2. readব্যবহার $2 $3 ...যাতে আপনি ব্যবহার করতে পারি তার কর্ম নিয়ন্ত্রণ করতে -nএবং-t
  3. যদি readব্যর্থতা থেকে বেরিয়ে আসে, echoসৌন্দর্যের জন্য একটি লাইন ফিড
  4. আমার Git on Windowsএকমাত্র আছে bash-3.1এবং নেই trueবা আছে false, সুতরাং returnপরিবর্তে ব্যবহার করুন। অবশ্যই এটি বাশ -৪.৪ (উইন্ডোজের জন্য গিটের বর্তমান) সাথে সামঞ্জস্যপূর্ণ।
  5. আইপিথন-স্টাইল "(y / [n])" ব্যবহার করে পরিষ্কারভাবে ইঙ্গিত দিতে যে "এন" ডিফল্ট।

2

এই সংস্করণ আপনাকে একাধিক কেস yবা Y, nবাN

  1. Allyচ্ছিকভাবে: অনুমোদনের প্রশ্ন সরবরাহ না করা পর্যন্ত প্রশ্নটি পুনরাবৃত্তি করুন

  2. Allyচ্ছিকভাবে: অন্য কোনও উত্তর উপেক্ষা করুন

  3. Allyচ্ছিকভাবে: আপনি চাইলে টার্মিনাল থেকে প্রস্থান করুন

    confirm() {
        echo -n "Continue? y or n? "
        read REPLY
        case $REPLY in
        [Yy]) echo 'yup y' ;; # you can change what you do here for instance
        [Nn]) break ;;        # exit case statement gracefully
        # Here are a few optional options to choose between
        # Any other answer:
    
        # 1. Repeat the question
        *) confirm ;;
    
        # 2. ignore
        # *) ;;
    
        # 3. Exit terminal
        # *) exit ;;
    
        esac
        # REPLY=''
    }

এটিও লক্ষ্য করুন: এই ফাংশনের শেষ লাইনে REPLY ভেরিয়েবল সাফ করুন। অন্যথায় যদি আপনি echo $REPLYদেখতে পান এটি আপনার টার্মিনালটি খোলার বা বন্ধ না করা বা এটি পুনরায় সেট না করা অবধি এখনও সেট করা আছে।


1

গেমটি দেরীতে, তবে আমি confirmআগের উত্তরগুলির কার্যকারিতার আরও একটি বৈচিত্র তৈরি করেছি :

confirm ()
{
    read -r -p "$(echo $@) ? [y/N] " YESNO

    if [ "$YESNO" != "y" ]; then
        echo >&2 "Aborting"
        exit 1
    fi

    CMD="$1"
    shift

    while [ -n "$1" ]; do
        echo -en "$1\0"
        shift
    done | xargs -0 "$CMD" || exit $?
}

এটি ব্যবহার করতে:

confirm your_command

বৈশিষ্ট্য:

  • প্রম্পটের অংশ হিসাবে আপনার কমান্ড মুদ্রণ করে
  • NULL ডিলিমিটার ব্যবহার করে তর্কগুলি পাস করে
  • আপনার কমান্ডের প্রস্থান স্থিতি সংরক্ষণ করে

বাগ:

  • echo -enসাথে কাজ করে bashতবে আপনার শেলের সাথে ব্যর্থ হতে পারে
  • যুক্তি echoবা হস্তক্ষেপ যদি ব্যর্থ হতে পারেxargs
  • একটি জিলিয়ন অন্যান্য বাগ কারণ শেল স্ক্রিপ্টিং শক্ত

1

চেষ্টা করুন,

 #!/bin/bash
 pause ()
 {
 REPLY=Y
 while [ "$REPLY" == "Y" ] || [ "$REPLY" != "y" ]
 do
  echo -e "\t\tPress 'y' to continue\t\t\tPress 'n' to quit"
  read -n1 -s
      case "$REPLY" in
      "n")  exit                      ;;
      "N")  echo "case sensitive!!"   ;; 
      "y")  clear                     ;;
      "Y")  echo "case sensitive!!"   ;;
      * )  echo "$REPLY is Invalid Option"     ;;
 esac
 done
 }
 pause
 echo "Hi"

0

এটি ঠিক একটি "হ্যাঁ বা না চাওয়া" নয়, কেবল একটি হ্যাক: ওরফে hg push ...না hgpushrepoতবে hgpushrepoconfirmedpushএবং যখন আমি পুরো জিনিসটি বানান করতে পারি তখন বাম মস্তিষ্ক একটি যৌক্তিক পছন্দ করে ফেলেছে।


1
তবে আপনি জানেন যে আপনি TABকীটি ব্যবহার করবেন !
হামিশ গ্রুবিজন

ঠিক আছে, তবে কমপক্ষে আমি কমান্ডটি একবারে দেখব এবং এটি অদ্ভুত দেখতে পাচ্ছি এবং এন্টার চাপার আগে দুবার ভাবি
nonopolarity

0

একই নয়, তবে ধারণাটি যেভাবেই কাজ করে।

#!/bin/bash  
i='y'  
while [ ${i:0:1} != n ]  
do  
    # Command(s)  
    read -p " Again? Y/n " i  
    [[ ${#i} -eq 0 ]] && i='y'  
done  

আউটপুট:
আবার? Y / n N
আবার? Y / n
আবার কিছু ? Y / n 7
আবার? Y / N এবং
আবার? Y / n nsijf
$

এখন আমি 1st আমি পড়ার প্রথম চরিত্রটি পরীক্ষা করে।


0

নীচে কোড দুটি জিনিস একত্রিত হয়

  1. সংক্ষিপ্ত ক্ষেত্রে কেস যত্ন নেবে শপ-নোকাসেম্যাচ

  2. এবং যদি এমন শর্ত থাকে যে উভয়ই ইনপুট গ্রহণ করবে আপনি হয় হ্যাঁ, হ্যাঁ, হ্যাঁ, y পাশ করেছেন।

    শপ-নোকাসেম্যাচ

    যদি [[সেড-4.2.2।। লাইন = ~ (হ্যাঁ | y) $]]

    তারপরে 0 থেকে প্রস্থান করুন

    ফাই


0

এখানে আমার সমাধান যা স্থানীয়করণকৃত রেজেক্স ব্যবহার করে। সুতরাং জার্মান ভাষায় "জা" এর জন্য "জা" হ্যাঁ হিসাবে ব্যাখ্যা করা হবে।

প্রথম আর্গুমেন্টটি হ'ল প্রশ্ন, যদি দ্বিতীয় আর্গুমেন্ট হ্যাঁর চেয়ে "y" হয় তবে এটি ডিফল্ট উত্তর হবে নাহলে কোনও ডিফল্ট উত্তর হবে না। উত্তরটি "হ্যাঁ" এবং উত্তরটি "না" হলে 1 ফেরতের মান 0 হয়।

function shure(){
    if [ $# -gt 1 ] && [[ "$2" =~ ^[yY]*$ ]] ; then
        arg="[Y/n]"
        reg=$(locale noexpr)
        default=(0 1)
    else
        arg="[y/N]"
        reg=$(locale yesexpr)
        default=(1 0)
    fi
    read -p "$1 ${arg}? : " answer
    [[ "$answer" =~ $reg ]] && return ${default[1]} || return ${default[0]}
}

এখানে একটি বেসিক ব্যবহার

# basic example default is no
shure "question message" && echo "answer yes" || echo "answer no"
# print "question message [y/N]? : "

# basic example default set to yes
shure "question message" y && echo "answer yes" || echo "answer no"
# print "question message [Y/n]? : "
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.