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 捕获用户输入的主要内容,如果未能解决你的问题,请参考以下文章