3

ユーザーが編集可能なbashスクリプトを介してシェルウィンドウにテキストを出力することは可能ですか?私は基本的に、特定の情報を事前に入力し、それが間違っている場合にユーザーがそれを編集できるようにしたいのです。

たとえば、スクリプトを作成する場合、次のようになります。

echo -n "Enter your name: Anthony"

while read user_input
do
    # do stuff with $user_input
done

ユーザーが単語Anthony のみAをインライン編集できるようにするにはどうすればよいですか(つまり、 inを超えてバックスペースを許可しないでください)、キーが押されたらAnthony値を変数に格納するにはどうすればよいですか?RETURN

編集

-iのオプションに似たものを探していますreadここに投稿された回答を参照)が、これはbash4+でのみ使用できます。bash 3の代替手段はありますか?

4

1 に答える 1

1

最近同様のセットアップが必要だったので、私がしたことは

$ cat a.sh
function input {
  python -c '
import sys,readline
readline.set_startup_hook(lambda: readline.insert_text(sys.argv[2]))
sys.stderr.write(raw_input(sys.argv[1]))
' "$@" 3>&1 1>&2 2>&3
}

A=$( input 'question: ' default )
echo "A='$A'"

$ ./a.sh
question: default
A='default'

実際には bash ではありませんが、これで作業は完了です。

于 2013-05-10T20:28:58.760 に答える