সম্পাদন থামান এবং ব্যবহারকারীর ইনপুটটির জন্য অপেক্ষা করুন


29

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা আমি তৈরি করছি এবং এটি নিয়ে আমার একটি সমস্যা রয়েছে: আমি মৃত্যুদন্ড কার্যকর করতে বিরতি দিতে এবং ব্যবহারকারীর ইনপুটটির জন্য অপেক্ষা করতে চাই। আমি ভেবেছিলাম আমার read -p -n 1 $fooকমান্ডটি দিয়েছিল তবে এই কমান্ডটিতে সিস্টেমের সমস্যা রয়েছে। এখানে আমার বর্তমান স্ক্রিপ্ট:

#!/bin/sh

# Ititialization

mainmenu () {
  echo "Press 1 to update your system"
  echo "Press 2 to install samba"
  echo "Press 3 to install vsFTPd"
  echo "Press 4 to install the current version of Webmin"
  echo "Press 5 to configure samba for Active Directory"
  echo "Press x to exit the script"
  read -n 1 -p "Input Selection:" mainmenuinput
  if [ "$mainmenuinput" = "1" ]; then
            updatesystem
        elif [ "$mainmenuinput" = "2" ]; then
            installsamba
        elif [ "$mainmenuinput" = "3" ]; then
            installvsftpd
        elif [ "$mainmenuinput" = "4" ]; then
            installwebmin
        elif [ "$mainmenuinput" = "5" ]; then
            configuresambaforactivedirectory
        elif [ "$mainmenuinput" = "x" ];then
            quitprogram
        elif [ "$mainmenuinput" = "X" ];then
            quitprogram
        else
            echo "You have entered an invallid selection!"
            echo "Please try again!"
            echo ""
            echo "Press any key to continue..."
            read -n 1
            clear
            mainmenu
        fi
}

# This builds the main menu and routs the user to the function selected.

mainmenu

# This executes the main menu function.
# Let the fun begin!!!! WOOT WOOT!!!!

আপনি মেইনমেনু ফাংশনে লক্ষ্য করতে পারেন পড়ুন -n 1 -p "পাঠ্য এখানে যায়" এন্ট্রি পড়ুন। উবুন্টু অনুসারে আমি এখানেই সমস্যাটি নিয়ে আসছি। কেউ কি আমাকে বলতে পারে কী ভুল হচ্ছে? ধন্যবাদ!


1
শেবাং ভুল। আপনি বাশ বৈশিষ্ট্যগুলি ব্যবহার করছেন, সুতরাং শেবাংটি অবশ্যই সেট করা উচিত #!/usr/bin/env bashবা #!/bin/bash
গিরিহা

উত্তর:


37

হতে হবে:

read  -n 1 -p "Input Selection:" mainmenuinput

এর nপরে পতাকা লাগানো দরকার , যেহেতু N অক্ষর প্রবেশ করার পরে কার্যকর করতে পড়তে বলা হচ্ছে , একটি সম্পূর্ণ লাইনের জন্য অপেক্ষা করবেন না। পরীক্ষা করে দেখুন help readএবং বিস্তারিত জানার জন্য এই


2
আমি এটা খুঁজে বের করেছি! এখানে সঠিক কোডটি দেওয়া হয়েছে: read -n 1 -p "Input Selection:" "mainmenuinput"এটি এখন প্রবেশ / রিটার্ন কীটির প্রেসের জন্য অপেক্ষা করে না :-)
এলিয়ট ল্যাবস এলএলসি

1
"অবৈধ বিকল্প -n"
এসইএস

1
আপনি যদি কেবলমাত্র মৃত্যুদন্ড স্থগিত করতে চান এবং লুপের জন্য চালিয়ে যেতে চান:for $whatever; do $whatever; read -n 1 -p Continue?; done
রেকিল্টনুক

কেউ আমাকে ব্যাখ্যা করতে পারেন কেন help readকাজ করে, যেহেতু helpকোনও প্রোগ্রাম নয় ...?
lindhe

স্পষ্টতই এটি একটি বাশ জিনিস। আরও তথ্যের জন্য:help help
lindhe
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.