$ time if [[ $dir2 -ot $dir1 ]] ; then open $dir2 ; else open $dir1 ; fi
real 0m0.055s
user 0m0.023s
sys 0m0.018s
$ time [[ $dir2 -ot $dir1 ]] && open $dir2 || open $dir1
real 0m0.000s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
在上面,我比较了两种测试哪个目录较旧,然后打开较旧目录的方法。我想我只是很困惑为什么测试后的&&and||运算符具有与if/then测试相同的功能,以及为什么它更快。各有优缺点吗?
pLu*_*umo 70
time总是对紧随其后的管道进行计时。
甲管道是一个或多个命令(或简单的序列化合物由控制运算符之一分开)
|或|&。
if ... fi是一个单一的复合命令,并且[[ ... ]]是一个命令。后面的部分&&没有被测量,time因为foo && bar是一个命令列表。
相比:
$ time if true; then sleep 1; fi
real 0m1.004s
user 0m0.000s
sys 0m0.000s
$ time true && sleep 1
real 0m0.000s
user 0m0.000s
sys 0m0.000s
# example of pipeline separated with |:
$ time true | sleep 1
real 0m1.004s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)
要测量所有第二个命令的时间,您可以将它们放在(大括号)中:
$ time { true && sleep 1; }
real 0m1.003s
user 0m0.000s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)