だから私はgetopts、getoptなどについて読んでいますが、私の問題に対する正確な解決策は見つかりませんでした。
私のスクリプトの使用法の基本的な考え方は次のとおりです。
./program [-u] [-s] [-d] <TEXT>
-d が渡された場合、TEXT は必要ありません。TEXT は通常、テキストの段落であることに注意してください。
私の主な問題は、getopts がフラグの解析を終了すると、TEXT パラメータの位置を知る方法がないことです。ただし、ユーザーが失敗して次のようなことをした場合、 TEXT が最後の引数であると想定できます。
./program -u "sentence 1" "sentence 2"
その場合、プログラムは使用法が正しくないことを認識しません。
私が最も近いのは、 getopt と IFS を使用して実行することです
ARGS=$(getopt usd: $*)
IFS=' ' read -a array <<< "$ARGS"
唯一の問題は、TEXT がテキストの長い段落である可能性があり、このメソッドはスペースのためにテキストのすべての単語を分割することです。
私の最善の策は、正規表現を使用して使用法が正しく形成されていることを確認してから、getopts で引数を抽出することだと考えていますが、より簡単な解決策があればいいと思います