我在这个剧本中找不到我做错的事, 我希望变量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变量存储所有三个时间值。
答案 0 :(得分:1)
由于do ( ... ) done
中的括号,您正在子shell中运行循环。每次迭代都有自己的子shell。
您希望在父shell中使用TimeVec
,但子进程无法修改其父进程中的变量,并且它们无法在它们之间共享变量。因此,每次迭代都可以看到变量始终为null。