@tonio을; subshell (`... or $ (...)) 구문을 사용하지 말라. ($ ((...))가 서브 쉘 구조가 아닐 때). 하위 셸은 사소한 양의 데이터로도 엄청난 성능 저하를 일으킬 수 있습니다. 외부 프로그램을 사용하여 쉘을 내장하여 수행 할 수있는 일을하는 모든 장소에서도 마찬가지입니다.
예 :
num=1
time while [[ $num -lt 10000 ]]; do
num=$((num+1))
done
echo $num
num=1
time while /bin/test $num -lt 10000; do
num=$(/bin/expr $num + 1)
done
echo $num
출력 (리눅스에 KSH에서 실행) :
real 0m0.04s
user 0m0.04s
sys 0m0.01s
10000
real 0m20.32s
user 0m2.23s
sys 0m2.92s
10000
... 내가 인정 (100)의 매우 250의 런타임 요소 및 CPU-시간 요소 필자가 사용한 예제는 과장된 것이었지만 명시 적으로 모든 내장 기능을 무시할 것을 요구했지만, 새로운 프로세스를 생성하는 것이 가능할 때이를 피하고 가능한 경우이를 피하고 새 프로세스가 어디에 있는지를 알 수있는 셸을 알고 있습니다. 만들어진.
변경을'! $$에 관한 그것의 누구나!! –
먼저, num을 이미 2로 반향 시키므로, num = 1을 num = 0으로 변경하여 모든 숫자를 인쇄해야합니다. 1 & 10 + 1 & 10 + Fredrik에서 제공 한 교정 –
삭제 이것은 당신의 질문에 대답하기 위해 시간을 투자 한 사람들에게는 불공평 할 것입니다. – NullUserException