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'
#############################
위의 예: 간격 문자 '#' 를 추가 한 후 숫자 를 교체 하여 연속 적 으로 같은 문자 '\#' 를 생 성 하 는 것 은 앞으로 쓰기 에 많은 도움 이 될 것 입 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.