端末単一入力で実行可能なif/elseを実行する

端末単一入力で実行可能なif/elseを実行する

if/else ユーザー入力を許可する実行プログラムがあり、bash端末で1行で、つまりプログラムプロンプトを経ずに実行したいと思います。

echoコマンドを渡す方法はありますか?

答え1

プログラムがデータを1行ずつ読み取ると仮定すると、bashで次のことができます。

{
    echo "input 1"
    echo "input 2"
    echo "input 3"
    ...
    echo "input n"
} | my-program

{}グループ内のコマンドの出力がパイプで接続されるコマンドグループを作成しますmy-program

もう一つの方法は、次のように書くことができるheredocを使うことです。

{
cat <<EOM
input 1
input 2
input 3
...
input n
EOM
} | my-program

区切り文字を終了する文字列は1行にする必要があるため、コマンドが出力をシェルSTDOUTではなくパイプに直接送信するように、コマンドグループまたはサブシェルを作成する必要がありEOMます。cat

関連情報