Shell 두 가지 for 순환 대응 실현 방법 분석

선언:
생산 환경 에서 의 응용 장면:루트 디 렉 터 리 에 수량 이 다른 디 렉 터 리 를 만 들 고 서로 다른 하 드 디스크 를 마 운 트 합 니 다.sdb-sdn 의 순서에 따라 대응/data2-/datan 은 for 순환 패 널 로 해결 해 야 합 니 다.예 를 들 어 for i in 1,2,3,for j in a b c,1a,2b,3c 와 같이 for 순환 은 for 의 대응 을 지원 하지 않 는 것 같 습 니 다.첫 번 째 순환 이 두 번 째 순환 의 첫 번 째 변수 에 만 대응 하 는 상황 이 될 것 입 니 다.시간 이 좀 걸 렸 습 니 다.마지막 으로 두 가지 서로 다른 방식 으로 이 루어 질 수 있 습 니 다.각각 세 번 째 변 수 를 사용 하여 배열 을 변수 번호 로 대체 하고 사용 하 는 방법 입 니 다.직접 사례 로 설명 합 니 다.
변수 대체:
쉽게 말 하면 먼저 상 관 없 는 데 이 터 를 삽입 한 다음 에 sed 를 사용 하여 교체 하 는 것 이다.

for i in $every;do
#$erery         ,    ,     wwwdata1         fstab

    parted -s /dev/$i mklabel gpt &>/dev/null || echo "${i}part01    ,   "
    parted -s /dev/$i mkpart Primary 1 `parted /dev/$i p|grep "^Disk"|cut -d ":" -f2` &>/dev/null || echo "${i}part02    ,   "
    mkfs -T largefile -t ext4 -b 4096 -m 2 /dev/${i}1 &>/dev/null || echo "${i}mkfs    ,   "
    echo "/dev/${i}1 /wwwdata1 ext4 defaults 0 0" >> /etc/fstab
    echo "-${i}         -" && sleep 2
done
for a in $foldername;do

#$foldername       ,  sed  wwwdata1,          wwwdata1,      。
sed -i 0,/wwwdata1/s//${a}/ /etc/fstab && echo "-${a}        -" && sleep 1 || echo "-${a}    -" done
배열:
대응 해 야 할 요 소 를 각각 두 배열 에 넣 고 for 순환 을 사용 하여 요소 아래 에 표 시 된 대로 호출 합 니 다.간단 한 예 를 들 어 여러분 이 이해 할 수 있 었 으 면 좋 겠 습 니 다.

#!/bin/bash
file=(1 2 3)
disk=(a b c)
for i in `seq 0 2`;do
    echo "${file[i]}${disk[i]}"
done
실제 응용 은 이 두 가지 방법 이 모두 가능 하지만 두 번 째 방법 은 더욱 과학적 이 고 대본 의 건장 성 이 좋다 는 것 을 알 수 있다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기