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

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

echo "hello world" | mysript.sh

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

input=$(cat)

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

【问题讨论】:

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

标签: shell unix cat


【解决方案1】:

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

在脚本中:

read LINE
echo $LINE

在命令行中:

echo "hello world" | ./mysript.sh

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

【讨论】:

  • 尝试使用包含通配模式的任何内容,例如“/etc/*”(即双引号 $LINE)。
猜你喜欢
  • 2022-07-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
相关资源
最近更新 更多