Linux Shell 동적 생 성 배열 시리즈 Seq 사용 방법

2579 단어
Linux Shell 동적 생 성 배열 시리즈 Seq 사용 방법
Liux 셸 배열 에 익숙 하지 않다 면 이전 글 을 보 세 요. Linux Shell 배열 의 구축 과 사용 기법 입 니 다. 이 글 은 주로 동적 으로 배열 시 리 즈 를 생 성 하 는 것 을 말 합 니 다.방법 이 많 을 것 입 니 다. 저 는 주로 구 와 계산 문 제 를 예 로 들 어 분석 합 니 다.
제목: Liux 셸 로 스 크 립 트 를 써 서 1. 1000 에서 모든 짝수 와 값 을 실현 하 십시오.
방법 1:
while 순환 을 통 해 필요 한 결 과 를 얻 을 수 있 습 니 다:
start=1;
 
total=0;
 
while [ $start -le 1000 ];do
 
    [[ $(($start%2)) == 0 ]]&&total=$(($total+$start));
 
   start=$(($start+1));
 
done;
 
echo $total;

[chengmo@centos5 ~]$ start=1;total=0;while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&total=$(($total+$start)); start=$(($start+1));done;echo $total;
250500

이상 실행 결 과 는 249500, Liux 셸 에서 "입 니 다."명령 행 구분자 로 서만약 여러분 이 $() 연산 기호 에 대해 잘 이해 하지 못 한다 면, 볼 수 있 습 니 다: Liux 셸 은 네 가지 연산 (정수 및 부동 소수점) 을 실현 하 는 간단 한 방법 입 니 다. 만약 에 [] [] 기호 에 대해 다른 글 Liux 셸 논리 연산 자, 논리 표현 식 에 대한 상세 한 설명 을 참고 할 수 있 습 니 다.
방법 2:
for 순환 을 통 해 결 과 를 얻 을 수 있 습 니 다:
start=0;
 
total=0;
 
for i in $(seq $start 2 1000); do
 
    total=$(($total+$i));
 
done;
 
echo $total;

[chengmo@centos5 ~]$ start=0;total=0;for i in $(seq $start 2 1000); do total=$(($total+$i));done;echo $total;
250500

위의 문 구 는 이미 코드 면 에서 방법 1 보다 현저히 우수 하고 성능 면 에서 도 매우 좋다.아래 를 비교 해 보면 다음 과 같다.
비교 성능:
[chengmo@centos5 ~]$ time (start=0;total=0;for i in $(seq $start 2 1000); do total=$(($total+$i));done;echo $total;) 250500
real 0m0.016s
user 0m0.012s
sys 0m0.003s
[chengmo@centos5 ~]$ time (start=1;total=0;while [ $start -le 1000 ];do [[ $(($start%2)) == 0 ]]&&total=$(($total+$start)); start=$(($start+1));done;echo $total;)
250500
real 0m0.073s
user 0m0.069s
sys 0m0.004s

방법 1 소모 시간 은 방법 2 의 6 배!
seq 사용:
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST

[chengmo@centos5 ~]$ seq 1000 ‘起始默认是 1,间隔默认也是1
[chengmo@centos5 ~]$seq 2 1000 ‘间隔默认是1
[chengmo@centos5 ~]$seq 1 3 10 '从1开始,到10 间隔为3 结果是:1 4 7 10

설명: 기본 간격 은 '빈 칸' 입 니 다. 다른 매개 변수 로 바 꾸 려 면: - s
[chengmo@centos5 ~]$seq -s'#' 1 3 10
1#4#7#10

응용 기술:
연속 배열 시리즈 생 성:
[chengmo@centos5 ~]$ a=($(seq 1 3 10))
[chengmo@centos5 ~]$ echo ${a[1]}
4
[chengmo@centos5 ~]$ echo ${a[@]}
1 4 7 10

연속 같은 문자 생 성:
[chengmo@centos5 ~]$ seq -s '#' 30 | sed -e 's/[0-9]*//g'
#############################

위의 예: 간격 문자 '#' 를 추가 한 후 숫자 를 교체 하여 연속 적 으로 같은 문자 '\#' 를 생 성 하 는 것 은 앞으로 쓰기 에 많은 도움 이 될 것 입 니 다.

좋은 웹페이지 즐겨찾기