答え1
これを使用して、rlwrap
ほとんどすべてのコマンドラインプログラム(シェルスクリプトを含む)にreadlineサポート(完成と履歴/呼び出しを含む)を追加できます。
詳細については、参考資料を参照しman rlwrap
て、rlwrapの使用に関するより具体的なアドバイスが必要な場合は、最小限のサンプルシェルスクリプトを含めるように質問を編集してください。
rlwrap
ほとんどのLinuxディストリビューションではすでにパッケージ化されており、以下からソースコードを見つけることができます。https://github.com/hanslub42/rlwrap
ところで、debian rlwrapパッケージの説明フィールドには次のものが表示されます。
Description-en:readline関数コマンドラインラッパーこのパッケージは、GNU readlineライブラリを使用して他のコマンドのキーボード入力を編集するための小さなユーティリティを提供します。入力履歴は、各コマンドごとに個別にコール全体に記憶されます。 bashのように、レコードの完了と検索は、完了した単語のリストをコマンドラインに割り当てることができます。
ところで、マニュアルページに記載されている1つの有用な内容は次のとおりです。
シェルスクリプトでは、読み取りの代わりに「ワンショット」モードでrlwrapを使用してください。
order=$(rlwrap -pYellow -S 'Your pizza? ' -H past_orders -P Margherita -o cat)
これは、次のようなものを置き換える役割を果たします。read -p 'Your order? ' order