在bash for循环中追加时间值

在bash for循环中追加时间值,bash,shell,Bash,Shell,我在这个脚本中找不到我做错了什么, 我希望变量TimeVec具有所有三个时间值。 脚本应该保存程序的多次运行时间 #!/bin/bash TIMEFORMAT=%R TimeVec="" for run in 1 2 3; do( exec 3>&1 4>&2 foo=$( { time sleep 1 1>&3 2>&4; } 2>&1 ) exec 3>&- 4>&-

我在这个脚本中找不到我做错了什么, 我希望变量TimeVec具有所有三个时间值。
脚本应该保存程序的多次运行时间

#!/bin/bash
TIMEFORMAT=%R
TimeVec=""
for run in 1 2 3; do(
    exec 3>&1 4>&2
    foo=$( { time sleep 1 1>&3 2>&4; }  2>&1 )
    exec 3>&- 4>&-
    TimeVec+=$foo
    echo $TimeVec
)
done
echo $TimeVec
这就是我得到的

1.001
1.003
1.003
编辑


我希望TimeVec变量存储所有三个时间值

由于
do(…)done
中的括号,您正在子shell中运行循环。每个迭代都有自己的子shell


您希望在父shell中使用
TimeVec
,但子进程不能修改其父进程中的变量,也不能在它们之间共享该变量。因此,在每次迭代中,变量的开头总是空的。

脚本应该做什么?输出中的三项是什么意思?脚本应该保存程序的多次运行时间。我想让TimeVec变量存储所有三个时间值。在数组中存储值怎么样?请注意,将内容放入
(…)
会创建一个隔离变量的子shell。您使用圆括号而不是让您的命令在
do中自由运行,这有什么原因吗。。。完成