$ 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
위에서 나는 어느 디렉토리가 더 오래된지 테스트한 다음 이전 디렉토리를 여는 두 가지 방법을 비교했습니다. 테스트 후 &&
AND 연산자가 ||
/test와 동일한 기능을 갖는 이유와 더 빠른 이유에 대해 혼란스러워하는 것 같습니다. 각각의 장점/단점이 있나요?if
then
답변1
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
모든 두 번째 명령의 시간을 측정하려면 명령을 (중괄호) 안에 넣어 그룹화하면 됩니다.
$ time { true && sleep 1; }
real 0m1.003s
user 0m0.000s
sys 0m0.000s