클래스의 경우 출력을 가져오는 Bash 스크립트를 작성해야 하며 ispell
while 루프 내에서 사용자 입력을 요청하면 파일의 다음 줄만 사용자 입력으로 저장됩니다.
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 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;
답변1
에서는 사용할 수 없습니다 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
,;
양쪽 끝에 전선을 넣을 필요가 없습니다.
답변2
#!/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