如何在等待另一个命令的变量分配时回显字符串?
How to echo string while waiting for variable assignment from another command?
我正在使用 CLI,其中一些命令可能需要几分钟。在运行之后,每10秒回显'in progress',直到完成。
示例命令:
cli run:command --json
示例输出:
in progress
in progress
in progress
{"status":"0", "result":"very good"}
我需要将输出 json 分配给变量。我这样做:
var=$(cli run:command --json)
我的输出很好,它只包含 json,没有 'in progress' 行。但是当我等待命令完成时,我没有每 10 秒看到 'in progress' 状态。
如何将输出分配给变量,但在等待时仍然看到 'in progress' 状态?
这里有一个方法:启动无限循环在后台打印'in progress' ,当“重要”命令完成时,终止后台进程:
(while true; do echo in progress; sleep 1; done) &
bgpid=$!
var=$(sleep 10; echo done) # this is your long-running command
kill $bgpid
我正在使用 CLI,其中一些命令可能需要几分钟。在运行之后,每10秒回显'in progress',直到完成。 示例命令:
cli run:command --json
示例输出:
in progress
in progress
in progress
{"status":"0", "result":"very good"}
我需要将输出 json 分配给变量。我这样做:
var=$(cli run:command --json)
我的输出很好,它只包含 json,没有 'in progress' 行。但是当我等待命令完成时,我没有每 10 秒看到 'in progress' 状态。
如何将输出分配给变量,但在等待时仍然看到 'in progress' 状态?
这里有一个方法:启动无限循环在后台打印'in progress' ,当“重要”命令完成时,终止后台进程:
(while true; do echo in progress; sleep 1; done) &
bgpid=$!
var=$(sleep 10; echo done) # this is your long-running command
kill $bgpid