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)
命令标准输出(即管道标准输出,在本例中为tail
stdout)被分配给变量 content 和不是显示在屏幕上。
另一方面,如果其中一个内部命令在其标准错误流上输出某些内容,它将显示在屏幕上,因为您不重定向 stderr。
请注意,这echo "$time"
是不可靠的。我建议printf "%s\n" "$time"
避免意外的价值副作用time
。
tail -c -number
是 POSIX 所以我不希望这个命令失败。