我有一个可执行程序,它接受 if/else 用户输入,并且我想从 bash 终端一行运行它,即无需通过程序提示。
有没有办法传递 echo 命令?
答案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
请注意,EOM
终止定界符的字符串必须单独位于一行,因此,您需要创建一个命令组或一个子 shell,以确保该cat
命令不会将其输出直接发送到您的 shell STDOUT,而是发送到管道。