【问题标题】:Display output of a Bash command and keeping the output in a variable显示 Bash 命令的输出并将输出保存在变量中
【发布时间】:2010-01-17 17:12:40
【问题描述】:

我不确定这是否可能,但我想做的是运行一个 bash 命令并将输出存储在一个变量中并像我正常启动该命令一样显示它。这是我的代码:

VAR=`svn checkout $URL`

所以我想将输出存储在 VAR 中并且仍然可以看到结果(并且因为 svn checkout 需要很长时间,所以我不能在之后执行 echo $VAR..)

谢谢

【问题讨论】:

    标签: bash stdout backticks


    【解决方案1】:

    如果命令是从终端运行的,你可以这样做:

    VAR=$(svn checkout $URL | tee /dev/tty)
    

    【讨论】:

    • 呸,秒杀我!
    • 可能是因为我用v=$(for i in $(seq 20); do echo $i; sleep 0.2; done | tee /dev/tty)测试了上面的内容,而你使用了sleep 1? :-)
    • 完美,正是我需要的。谢谢!
    • 请注意,由于缺少 tty,这在 Github Actions 执行时不起作用(请参阅github.com/actions/runner/issues/241
    【解决方案2】:

    您不必调用外部tee

    VAR=$(svn checkout $URL) && echo $VAR
    

    甚至:

    VAR=$(svn checkout $URL); echo $VAR
    

    【讨论】:

    • 我认为这个想法是 svn 需要很长时间,并且 OP 希望实时查看 svn 命令的输出,而不是在它结束之后。他甚至在问题中这么说:-)
    • 我想我需要得到一些关于 literacyoverflow 的帮助!
    猜你喜欢
    • 2021-12-03
    • 2011-12-31
    • 2021-06-12
    • 1970-01-01
    • 2010-12-24
    • 2015-11-08
    • 2018-01-18
    • 2020-08-15
    • 1970-01-01
    相关资源
    最近更新 更多