【发布时间】:2021-05-18 10:01:28
【问题描述】:
当我运行以下脚本时,ls -la 的输出存储到变量 $output。
#! /bin/sh
output=$(ls -la)
如何将ls -la 的输出通过管道传输到stdout 和$output?
我在运行borgbackup 的上下文中询问,它可以在备份期间输出很长时间。
我希望能够在手动运行脚本时跟踪进度,同时将输出存储在 $output 中以通过电子邮件将其发送给系统管理员。
【问题讨论】:
-
探索
tee(1)。 -
您可能已经知道解析
ls的输出的陷阱。但由于这个问题的未来读者可能不会,我仍然觉得有必要发布这个阅读材料:mywiki.wooledge.org/ParsingLs -
你看这两个答案给你一个答案。我想教你一些东西。
-
不要将标准输出与 tty 混为一谈。使用 tee 写信给
/dev/stdout,而不是/dev/tty -
但请注意,您需要写入主外壳的
/dev/stdout,而不是子外壳的标准输出。例如exec 3> /dev/stdout; output=$(ls -la | tee /dev/fd/3)