90477


以下のようにあるコマンドを実行した際に、その出力をファイルに書き出したいと考えています。  
ただ、コマンド実行後に入力を求められ、入力が完了しないと次の処理に進まないような挙動をしています。  
このような場合、どう対処すればいいでしょうか。  
ご教授お願い致します。

例）

[code]

    $ command > output.txt
    
[/code]


CC BY-SA 4.0
2022-08-10T01:39:46.260
90476
2022-08-10T03:37:03.980
2022-08-10T03:37:03.980
3060
34792
question
linux bash
コマンドの標準出力をファイルにリダイレクトしたいが、コマンド実行後に入力を求められる場合の対処法


`command <<< hoge > output.txt` のように`<<<`で1行の入力を受け取る方法や、  
`echo hoge | command > output.txt` のようにパイプで渡す方法でできます。

複数回の入力が必要な場合は、ヒアドキュメント `<< 終端文字` で複数のコマンドを渡すことができます。

**サンプルスクリプト** (read_sample.sh)

[code]

    #!/bin/bash
    read -p "Press any key: " DATA
    echo "Entered key: $DATA" 
    if [ $# -eq 1 ] && [ "$1" = "-two_inputs" ]; then
        read -p "Press next key: " DATA
        echo "next key: $DATA" 
    fi
    
[/code]

**コマンド**

[code]

    $ ./read_sample.sh <<< hoge > output.txt
    $ ./read_sample.sh -two_inputs << \\e >> output.txt
    fuga
    piyo
    \e
    
[/code]

**実行結果** (output.txt)

[code]

    Entered key: hoge
    Entered key: fuga
    next key: piyo
    
[/code]

**参考資料**

  * [覚えてると案外便利なBashのリダイレクト・パイプの使い方9個](https://orebibou.com/ja/home/201602/20160229_001/)
  * [UNIX & Linux コマンド・シェルスクリプト リファレンス](https://shellscript.sunone.me/input_output.html#%E3%83%92%E3%82%A2%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88-)


CC BY-SA 4.0
2022-08-10T02:06:25.883
90477
2022-08-10T02:23:28.980
2022-08-10T02:23:28.980
9820
9820
90476
answer