aspellを介してユーザー入力のスペルをチェックしますが、この場合インタラクティブモードを呼び出す方法は何ですか?

aspellを介してユーザー入力のスペルをチェックしますが、この場合インタラクティブモードを呼び出す方法は何ですか?

ユーザーの文を受け取るスクリプトを作成し、文字列を次にパイプしたいと思います。アスパーそれからインタラクティブ画面の提案(ユーザーがスペルミスを犯した場合)の後、単語がスクリプトに返され、スペルが間違っている部分をその単語に置き換えます。

私はaspellオプションについて知っています。

1) ファイルのスペルエラーを確認し、提案リストを表示します。インタラクティブモードで:

aspell check <file name>

2)ファイルのスペルエラーを確認し、提案のリストを表示します。インタラクティブモードではありません:

cat <filename> | aspell -a

しかし、オプション1を試してみると「エラー:stdinは端末ではありません」、この問題を克服する方法についての生産的なアドバイスを得たいと思います。 :)

ありがとう

ベストアンサー1

一時ファイルを使用せずにこの問題を回避できないようです。コマンドの代替形式として、これに対する基本的なサポートがありますzsh=(...)

ここでは、変数の内容(の出力printf %s $string)のスペルチェックが行われます。

{
  (){
    aspell check -x $1 >&3 3>&-
    cat $1
  } =(printf %s $string) | IFS= read -rd '' corrected_string
} 3>&1

おすすめ記事