फ़ाइल लाइन को लाइन से पढ़ते समय उपयोगकर्ता इनपुट का अनुरोध करना


9

कक्षा के लिए मुझे एक बैश स्क्रिप्ट लिखने की ज़रूरत है जो आउटपुट से लेगी ispellऔर जब मैं कोशिश करता हूँ और उपयोगकर्ता इनपुट का अनुरोध करता हूं, जबकि लूप के अंदर यह फ़ाइल की अगली पंक्ति को उपयोगकर्ता इनपुट के रूप में सहेजता है।

मैं पाश में उपयोगकर्ता इनपुट का अनुरोध करने के बारे में कैसे जा सकता हूं?

#!/bin/bash
#Returns the misspelled words
#ispell -l < file

#define vars
ISPELL_OUTPUT_FILE="output.tmp";
INPUT_FILE=$1


ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE;

#echo a new line for give space between command
#and the output generated
echo "";

while read line;
do
   echo "'$line' is misspelled. Press "Enter" to keep";
   read -p "this spelling, or type a correction here: " USER_INPUT;

   if [ $USER_INPUT != "" ]
   then
      echo "INPUT: $USER_INPUT";
   fi


   echo ""; #echo a new line
done < $ISPELL_OUTPUT_FILE;

rm $ISPELL_OUTPUT_FILE;

जवाबों:


8

आप अपने में ऐसा नहीं कर सकते while। आपको किसी अन्य फ़ाइल डिस्क्रिप्टर का उपयोग करने की आवश्यकता है

निम्नलिखित संस्करण का प्रयास करें:

#!/bin/bash
#Returns the misspelled words
#ispell -l < file

#define vars
ISPELL_OUTPUT_FILE="output.tmp";
INPUT_FILE=$1


ispell -l < $INPUT_FILE > $ISPELL_OUTPUT_FILE;

#echo a new line for give space between command
#and the output generated
echo "";

while read -r -u9 line;
do
   echo "'$line' is misspelled. Press "Enter" to keep";
   read -p "this spelling, or type a correction here: " USER_INPUT;

   if [ "$USER_INPUT" != "" ]
   then
      echo "INPUT: $USER_INPUT";
   fi


   echo ""; #echo a new line
done 9< $ISPELL_OUTPUT_FILE;

rm "$ISPELL_OUTPUT_FILE"

देखें कि इनपुट को "खाने" से अन्य कमांड कैसे रखें

टिप्पणियाँ

  • अधिक उद्धरण का उपयोग करें! वे महत्वपूर्ण हैं। Http://mywiki.wooledge.org/Quotes और http://wiki.bash-hackers.org/syntax/words देखें
  • bashहै Cया नहीं Perl, ;प्रत्येक अंत लाइनों पर डाल करने की आवश्यकता नहीं है

0
#!/bin/bash

exec 3<> /dev/stdin

ispell -l < $1 | while read line
do
    echo "'$line' is misspelled. Press 'Enter' to keep"
    read -u 3 -p "this spelling, or type a correction here: " USER_INPUT

    [ "$USER_INPUT" != "" ] && echo "INPUT: $USER_INPUT"
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.