变量中的命令输出并抑制标准输出

变量中的命令输出并抑制标准输出
time=$(TIMEFORMAT="%R"; { time /usr/bin/time -f "\n%E elapsed" curl -s "https://example.com"; } 2>&1)

ElapsedTime=$(echo "$time" | tail -c 23)

上述命令按预期工作,但是,我不希望 echo 打印到标准输出。我只想将值分配给变量。

答案1

第一个和第二个分配之间没有区别,或者就var=$(echo foo)标准输出而言没有区别。

在你的第二条指令中:

ElapsedTime=$(echo "$time" | tail -c 23)

命令标准输出(即管道标准输出,在本例中为tailstdout)被分配给变量 content 和不是显示在屏幕上。

另一方面,如果其中一个内部命令在其标准错误流上输出某些内容,它将显示在屏幕上,因为您不重定向 stderr。

请注意,这echo "$time"是不可靠的。我建议printf "%s\n" "$time"避免意外的价值副作用time

tail -c -number是 POSIX 所以我不希望这个命令失败。

相关内容