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