私は、ユーザーが入力したテキストを繰り返し待ってから、入力したテキストで別のスクリプトを呼び出します。 SO code credit, 'version 1'.Bashの履歴コマンドは、すべてのオプションを無視して単語を保存します。
while IFS="" read -r -e -p 'Enter search term: ' -a search_term; do
if [ "$search_term" != "" ]; then
/path/to/script ${search_term[@]}
else
echo "Bye."
exit 0
fi
history -s ${search_term[@]}
done
これは、bashは以前のエントリまでスクロールできるようにするhistory
組み込みコマンドを呼び出します。
問題は、search_term
がオプションで始まる場合です。 -x exclude_this search term
。これにより、次のエラーが発生します。history: -x: invalid option
。 history
コマンドで、search_term
の全体を履歴エントリとして追加し、search_term
で始まるオプションを処理しないようにするにはどうすればよいですか?すなわち、-x exclude_this search term
の全体を履歴エントリとして追加する必要があります。
注:これは実際にはhistory -s "" ${search_term[@]}
のような最初の空の文字列を追加することで解決できますが、各履歴エントリの先頭にスペースがあり、繰り返し使用するたびにエントリをさらに右に押します。だから、これはやや面白い解決策です。
ありがとうございました。