如果我有一行在$ SECONDS变量上操作两次,那么该变量会保持相同的值,因为它在同一行上吗?
例如,考虑一个简单的行,如echo $SECONDS $SECONDS
或echo $((SECONDS/60)) minutes and $((SECONDS%60)) seconds
。
SECONDS是否总是相同,因为它们在同一条线上?换句话说,它是否在执行该行之前得到扩展?什么时候$ SECONDS得到扩展?
答案 0 :(得分:3)
在传递给echo
之前,它们会被扩展,如果这就是你要求的那样。但是,$SECONDS
的2个实例将单独评估,AFAIK。因此,如果seconds
tick超过2次评估之间的值,您将看到2个不同的值。
试试这个:
i=0;
while true; do
read a b <<< "$SECONDS $SECONDS";
((i++));
((a!=b)) && printf "Iteration %-8d : %d %d\n" $i $a $b;
done
Iteration 3517346 : 467 468
Iteration 4157710 : 488 489
Iteration 4240219 : 491 492