シェルスクリプトを使用して新しい端末に入力を送信する方法

シェルスクリプトを使用して新しい端末に入力を送信する方法

シェルスクリプトを使用して自動的にCプログラムに入力を送信する方法を見つけました。たとえば、次のCプログラムをコンパイルすると:

//test.c
int main()
}
    int x;
    printf("Please enter an integer:");
    scanf("%d", &x);
  printf("\nYou entered %d\n", x);
}

そして次のスクリプトを書いてください:

#!/bin/bash
./test << EOF
5
EOF

端末を開いてスクリプトを実行すると、次の出力が表示されます。

Please enter an integer:
You entered 5

今、私は新しい端末でテストを実行したいと思いますが、このコマンドを使用してこれを実行できることがわかりました。
gnome-terminal -x ./test
問題は、両方を実行しようとすると(新しい端末でテストを実行し、入力を自動的に送信する)スクリプトは機能しません。入力は新しい端末に送信されません。いつものように直接提供してください。

私は何が間違っていて、どのように解決できますか?

PS形式が多少混乱していると申し訳ありません。試してみました。

ベストアンサー1

バイナリの代わりにシェルスクリプトを使用すると機能します。

$ ~/tmp/term_test$ cat ./test_wrapper.sh 
#!/bin/bash 
./test << EOF
5 
EOF
read dummy
$ gnome-terminal -x  ./test_wrapper.sh 
$ 

私が追加した「ダミー読み取り」行は、スクリプトが完了するとすぐに端末が閉じることを防ぎます。

新しい端末セッションを開く必要がありますか?

おすすめ記事