在bash for循环中追加时间值
我在这个脚本中找不到我做错了什么, 我希望变量TimeVec具有所有三个时间值。在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>&-
脚本应该保存程序的多次运行时间
#!/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中自由运行,这有什么原因吗。。。完成
?