显示Bash命令的输出并将输出保存在变量中

20

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

VAR=`svn checkout $URL`
所以我想将输出存储在VAR中并仍然看到结果(因为svn checkout需要很长时间,所以我不能立即在其后执行echo $VAR..) 谢谢
2个回答

26

如果命令是从终端运行的,您可以执行以下操作:

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

2
啊,你比我快了几秒钟! - T.J. Crowder
1
也许是因为我使用了 v=$(for i in $(seq 20); do echo $i; sleep 0.2; done | tee /dev/tty) 进行测试,而你使用了 sleep 1? :-) - Alok Singhal
1
请注意,由于缺少 tty(请参见 https://github.com/actions/runner/issues/241 ),此操作在 Github Actions 中执行时无法正常工作。 - Ashutosh Jindal
谢谢@AshutoshJindal,帮我省了些麻烦。 - Lucas Ross

2

您不必调用外部的tee

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

甚至可以:
VAR=$(svn checkout $URL); echo $VAR

我认为这个想法是svn需要很长时间,而且OP想实时看到svn命令的输出,而不是在它结束后。他甚至在问题中这样说 :-) - Alok Singhal
1
我觉得我需要在LiteracyOverflow上寻求帮助! - Dennis Williamson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接