Linux非交互式场景为交互式命令提供输入
1. 使用 echo 和管道 (|)
这是最常见的方法,我们可以使用 echo 来生成输入并通过管道将其传递给需要输入的命令,如:
echo "your_input" | command
2. 使用 here document
(<<
或 <<<
)
here document
可以在脚本中直接嵌入多行输入,通常用于为需要多行输入的命令提供输入。
多行输入 (<<
)
command << EOF
input1
input2
EOF
单行输入 (<<<
)
command <<< "your_input"
3. 使用 printf
printf
类似于 echo
,但更灵活,可以格式化输出。
printf "your_input\n" | command
4. 使用 yes
yes 命令可以用来自动应答多个交互提示,通常用于回应持续的“yes/no”提示。
yes | command
或者:
yes "your_input" | command
5. 使用输入重定向 (<
)
将输入从文件或标准输入中重定向到命令。
command < input_file
6. 使用 expect
expect
是一个强大的工具,专门用于自动化处理交互式命令。它可以根据预定义的模式自动输入数据。
简单示例:
#!/usr/bin/expect
spawn command
expect "Enter something:"
send "your_input\n"
expect eof
7. 使用 xargs
xargs
可以将标准输入转换为命令行参数,通常与管道结合使用。
echo "your_input" | xargs command
8. 使用环境变量
有些命令支持从环境变量中读取输入。可以通过设置环境变量来传递所需输入。
export INPUT_VAR="your_input"
command
9. 使用文件描述符 (fd
)
可以将输入重定向到特定的文件描述符(如标准输入 0)来传递输入。
command 0< input_file
这些方法在不同的场景中都很常见,并且各有优缺点,选择时需要考虑命令的特性和场景需求。