私は最近、bashで私のc ++プログラムを自動化するに使用できるスクリプトを作成しようとしています。 AutoItをご存じの場合は、私がやろうとしていることの例を示すだけです。
send("1{enter}")
または
send("!a")
OK AutoItを話さない人のために:
最初の例は、シミュレートされた「1」キーストロークを送信し、その後にenter(CR)を送信します。
2番目の例はalt-aを送信します
私は具体的にbashでこれを実行しようとしています。 他のスクリプト言語では実行できません
また、私はnotがspoonfeedを好みます。 書き方を明記してください。私のためにスクリプトを書くことは許可されていません。
プログラムの標準入力にテキストをフィードするには、 パイプおよび/またはリダイレクト を使用します。
echo 1 | myprogram
(echo "First line"
echo "Second line") | myprogram
myprogram <<EOF
First line
Second line
EOF
インタラクティブなCLIプログラムの場合(notfull-terminal ones)、名前付きパイプまたは coprocesses を一種の貧乏人のexpect
(Tclであるため除外した):
mkfifo in out
myprogram <in >out &
echo "First line" >in
read -r reply <out
mkfifo in out
myprogram <in >out &
exec {infd}>in {outfd}<out
echo "First line" >&$infd
read -r reply <&$outfd
coproc foo { myprogram; }
echo "First line" >&${foo[1]}
read -r reply <&${foo[0]}
(出力パイプから読み取るときは注意してください。例:head -1 <out
は1行だけを読み取るのではなく、1つの完全な4kブロックをバッファリングし、1行を印刷し、残りを破棄します。)
xdotool を探しています。
xdotoolのコマンド例に相当するものは次のとおりです。
xdotool key 1 Return
xdotool keydown Alt key a keyup Alt