开发者

Is there a way to search an entire array inside of an argument?

Posted my code below, wondering if I can search one array for a match... or if theres a way I can search a unix file inside of an argument.

#!/bin/bash

# store words in file
cat $1 | ispell -l > file
# move words in file into array
array=($(< file))
# remove temp file
rm file
# move already checked words into array
checked=($(< .spelled))

# print out words & ask for corrections
for ((i=0; i<${#array[@]}; i++ ))
do
if [[ ! ${array[i]} = ${checked[@]} ]]; then
    read -p "' ${array[i]} ' is mispelled. Press "Enter" to keep
this spelling, or type a correction here: " input
if [[ ! $input = "" ]]; then
correction[i]=$input
else
echo ${array[i]} >> .spelled
fi
fi
done

echo "MISPELLED:              CORRECTIONS:"
for ((i=0; i<${#correction[@]}; i++ ))
do
echo ${array[i]}                ${correction[i]}
done

otherwise, i would need to write a for loop to check each array indice, a开发者_运维百科nd then somehow make a decision statement whether to go through the loop and print/take input


The ususal shell incantation to do this is:

cat $1 | ispell -l |while read -r ln
do
  read -p "$ln is misspelled. Enter correction" corrected
  if [ ! x$corrected = x ] ; then
    ln=$corrected
  fi
  echo $ln
done >correctedwords.txt

The while;do;done is kind of like a function and you can pipe data into and out of it.

P.S. I didn't test the above code so there may be syntax errors

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜