Shell 의 for 순환 요약
for((i=1;i<=10;i++));do echo $(expr $i \* 4);done
셸 에서 자주 사용 하 는 것 은 for i in$(seq 10)입 니 다.
for i in `ls`
for i in ${arr[@]}
for i in $* ; do
for File in /proc/sys/net/ipv4/confaccept_redirects:'
for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo $File
done
echo " "
for i in f1 f2 f3 ;do
echo $i
done
echo
echo "C for :"
for (( i=0; i<10; i++)); do
echo $i
done
---------------------------------------------------------------------------------------------------------셸 에서 for 순환 용법
셸 문법 이 너무 귀 찮 습 니 다.한 순환 을 잠시 했 습 니 다.출력 1-100 칸 을 3 으로 나 눌 수 있 는 몇 가지 다른 방법 을 찾 았 습 니 다.
1.사용()
#!/bin/bash
clear
for((i=1;i<100;i++))
for
do
if((i%3==0))
then
echo $i
continue
fi
done
2.`seq 100`사용
#!/bin/bash
clear
for i in `seq 100`
do
if((i%3==0))
then
echo $i
continue
fi
done
3.while 사용
#!/bin/bash
clear
i=1
while(($i<100))
do
if(($i%3==0))
then
echo $i
fi
i=$(($i+1))
done
--------------------------------------------------------------------------------------------------------셸 이 for 순환 으로 숫자 가 증가 할 때 문 제 를 발 견 했 습 니 다.셸 아래 for 순환 의 몇 가지 방법 을 보 여 줍 니 다.
1.
for i in `seq 1 1000000`;do
echo $i
done
seq 1 1000000 으로 증가 하기 전에 이런 방법 을 사용 할 때 문제 가 발생 하지 않 았 습 니 다.왜냐하면 예전 의 i 는 백만(1000000)을 전혀 사용 하지 않 았 기 때 문 입 니 다.프로젝트 는 저 라 는 숫자 가 백만 보다 훨씬 많 기 때 문 입 니 다.seq 수치 로 1000000 시 에 1e+06 으로 전환 하 는 것 을 발 견 했 습 니 다.숫자 로 다른 연산 을 할 수 없 거나$i 를 효과 적 이 고 정확하게 사용 하여 다른 방법 으로 해결 해 야 합 니 다.다음 과 같 습 니 다.2.
for((i=1;i<10000000;i++));do
echo $i
done
3.
i=1
while(($i<10000000));do
echo $i
i=`expr $i + 1`
done
이 방법 은 expr 를 호출 하기 때문에 운행 속 도 는 1,2 종 보다 훨씬 느 리 지만 약간 개선 할 수 있 습 니 다.i='expr$i+1'을 i=$($i+1)로 바 꾸 면 속도 가 조금 올 라 갈 수 있 습 니 다.그러나 구체 적 으로 는 해당 셸 환경 이 지원 하 는 지 여 부 를 볼 수 있 습 니 다.4.
for i in {1..10000000;do
echo $i
done
사실 어떤 방법 을 선택 하 는 지 구체 적 으로 해당 하 는 셸 환경의 지원 을 받 아 기대 하 는 효 과 를 얻 고 속도 적 인 문 제 를 고려 해 야 한다.예시:
# !/bin/sh
i=1
function test_while(){
i=1
while [ $i ]
do
echo $i
i=`expr $i + 1`
if [ $i -ge 10 ]; then
break
fi
done
}
function test_for(){
i=1
for ((i=1; i<=100; i++)); do
echo $i
if [ $i -ge 10 ]; then
break
fi
done
}
function test_continue(){
i=1
for i in $(seq 100); do
if (( i==0 )); then
echo $i
continue
fi
done
}
echo "test_while..."
test_while
echo "test_for..."
test_for
echo "test_continue..."
test_continue
실행 결과:
test_while...
1
2
3
4
5
6
7
8
9
test_for...
1
2
3
4
5
6
7
8
9
10
test_continue...
10
20
30
40
50
60
70
80
90
100
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.