Shell:用 cat 捕获用户输入

Posted

技术标签:

【中文标题】Shell:用 cat 捕获用户输入【英文标题】:Shell: Catch user input with cat 【发布时间】:2016-06-16 12:21:44 【问题描述】:

如何从使用管道调用的 shell 脚本中捕获输入,而不会有 cat 永远等待输入的风险?

echo "hello world" | mysript.sh

在脚本中,我尝试通过以下方式获取输入:

input=$(cat)

但在某些情况下,cat 命令会导致整个脚本超时,因为它等待输入。

【问题讨论】:

您想捕捉输入但不想等待输入? 输入必须以 EOF = ctrl+D 结尾。 请考虑在您的脚本中使用read。您可以逐行读取,并且您的 shell 可能支持额外的工具,例如超时和单字符读取。 【参考方案1】:

假设你想在 shell 脚本中处理来自管道的数据,试试:

在脚本中:

read LINE
echo $LINE

在命令行中:

echo "hello world" | ./mysript.sh

在这种情况下,hello world 将被读入LINE

【讨论】:

尝试使用包含通配模式的任何内容,例如“/etc/*”(即双引号 $LINE)。

以上是关于Shell:用 cat 捕获用户输入的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统 查看用户权限的命令

shell习题-18

Linux shell交互式详解

编写一个 shell脚本文件,文件名为 testname.sh,输入用户名和文件名,判断用 户?

〇——什么是SHELL

Shell函数接受用户输入