예, 일반적으로 for 루프 또는 이와 유사한 방법을 사용하여 배열을 증가시키지 만이 시나리오에서는 이미 루프에 있으므로 하나만 설정하면됩니다 값을 배열에서 이동하십시오. 여기 코드는 다음과 같습니다 변수 발행을 사용하여 선언하는 동안 배열 요소 늘리기
n=1
cat databases/$IPS | grep -v \# | while read LINE; do
ENDPOINT[$n]="`echo $LINE | cut -d":" -f1`";
echo "TESTING: ${ENDPOINT[$n]}"
let n++
done
그래서 while 루프는 플랫 파일 데이터베이스에서 여러 줄을 읽고 배열에 저장해야하는 첫 번째 콜론 구분 된 값을 가져옵니다. 이 프로젝트에서 너무 오랫동안 진흙 투성이가되고 있습니다. 나는이 부분을 재고해야 할 수도 있습니다.
그래서 다른 루프를 사용하지 않고 변수를 사용하여 요소를 증가시킬 수 있으므로 현재 while 루프에서 배열을 설정할 수 있습니다.
----- UPDATE는 -----
내가 무엇을하려고 메신저 것은 조금 이상하고 정통 보인다 알고있다. 따라서 while 루프는 데이터베이스를 한 줄씩 읽습니다. while 루프의 첫 번째 반복 동안 데이터베이스가 읽히고 데이터베이스의 첫 번째 행에있는 첫 번째 "셀"이 배열 요소 1로 배열에 저장됩니다 (또는 0 일 수도 있음). 그런 다음 while 루프는 두 번째 패스로 돌아가 데이터베이스의 두 번째 행의 첫 번째 셀을 가져오고 요소 2 아래의 배열에 저장해야합니다. 루프는 데이터베이스가 끝날 때까지 계속이 작업을 수행합니다.
그래서 루프를 사용하여 배열의 내용을 읽는 방법을 알고 있지만 결코 루프를 사용하여 배열을 설정하지 않았습니다. while 루프가 다음 패스를 수행 할 때 배열을 덮어 씌우지 않을 때 배열의 요소 번호를 가져올 수 없습니다.
도움이 되셨습니까?
----- UPDATE -----
는 그래서이 좀 작동하는 것 같습니다. 이 배열에이 데이터베이스 값을 저장하는 전체 요점은이 while 루프 내에서 사용되는 것뿐만 아니라 (무관 한 코드 생략) 때문입니다. 그러나 나는이 값들을 스크립트의 다른 곳에서 사용해야합니다.
고양이 데이터베이스/$ IPS | grep -v # | 읽는 동안 LINE; do VAR = "echo $LINE | cut -d"|" -f1
"; [$ 않음] = "$의 VAR" 는 "을 heres 배열 변수 $ {ENDPOINT [$ 않음]을}"에코 ENDPOINT 수행 는
여전히 문제가 진정으로 기억되는 것이 나타나지 않는다하더라도된다 정렬. 배열의 첫 번째 요소를 덮어 쓰는 것입니다. 스크립트의 어딘가에서 더 낮은 배열 값을 반향하려고하면 배열 요소 0의 값과 데이터베이스의 마지막 항목으로 설정된 값만 나타납니다.
당신이 증가 원하는 작업 ? 배열 요소를 증가시키기 위해 루프가 필요하지 않습니다. – perreal
나는 전혀 질문을 이해하지 못한다. 당신은 정교 할 수 있니? –
메인 게시물이 업데이트되었습니다. – Atomiklan