2012-07-31 4 views

답변

0

ash, Almquist 셸에서 게시했지만 bash, Bourne-Again SHell을 사용하고 있습니다.

파이프 하나에 문제가 있습니다. bash에서 파이프를 실행할 때, 각면은 자체 하위 쉘에서 실행되며 변수는 모두 로컬입니다. 올바른 메커니즘은 루프로 리디렉션하는 것입니다.

또 다른 문제점은 사용자의 기능이 read으로, 이는 쉘 내장 (사용하고 있음)입니다. 좋은 아이디어는 접두어 f_과 같은 이름 지정 규칙을 사용하는 것이므로이 이름 충돌을 얻지 못합니다.

또 다른 문제점은 두 번째 for 루프의 구문이 여러 가지면에서 잘못되었습니다. 다음은 수정 된 버전입니다.

#!/bin/bash 

f_read() 
{ 
    count=0 
    while read line 
    do 
     FILE[$((count += 1))]="$line" 
    done < localfile 
} 

f_read 
for ((i=0;i<${#FILE[@]};i++)) 
do 
    echo ${FILE[i]} 
done 
관련 문제