bash 스 크 립 트: 파일 을 한 줄 씩 읽 는 방법 (가장 좋 고 나 쁜 방법)

3749 단어
bash 스 크 립 트: 파일 을 한 줄 씩 읽 는 방법 (가장 좋 고 나 쁜 방법)
2014/07/01 | 분류: IT 기술 | 2 개의 댓 글 | 태그: Bash, shell
다음으로 공유:
4
본 고 는 백락 온라인 - unblock 에서 linux poison 으로 번역 되 었 습 니 다.기술 번역 팀 에 오신 것 을 환영 합 니 다.전 재 는 문장 말미 의 요 구 를 참조 하 시기 바 랍 니 다.
bash 스 크 립 트 로 파일 을 읽 는 방법 은 매우 많다.첫 번 째 부분 을 보십시오. while 순환 과 그 후의 파이프 명령 (|) (cat $FILE | while read line; do... ),순환 중 i 의 값 을 증가 시 켰 습 니 다. 마지막 으로 저 는 생각 하지 않 은 i 를 얻 었 습 니 다. 파이프 명령 은 하위 셸 을 보 내 파일 을 읽 기 때 문 입 니 다. (하위 셸 의) while 순환 에서 의 모든 작업 (예 를 들 어 i +) 은 하위 셸 이 끝나 면서 잃 어 버 립 니 다.
두 번 째, 최 악의 하나 입 니 다. 가장 뚜렷 한 오 류 는 파일 을 읽 는 과정 에서 for 순환 (for fileline in $(cat $FILE), do..) 을 사용 한 것 입 니 다. 이렇게 한 단 어 를 인쇄 할 때마다 줄 을 바 꾸 는 것 입 니 다. for 순환 은 빈 칸 을 기본 IFS 로 사용 하기 때 문 입 니 다.
완벽 한 방법, 즉 세 번 째 while 순환 (while read line; do... done < $FILE) 가장 적합 하고 가장 간단 한 줄 로 파일 을 읽 는 방법 입 니 다. 다음 의 예 를 보십시오.
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 Input: $ cat sample.txt This is sample file This is normal text file
  Source: $ cat readfile.sh #!/bin/bash
  i=1; FILE=sample.txt
  # Wrong way to read the file. # This may cause problem, check the value of 'i' at the end of the loop echo "###############################" cat $FILE | while read line; do          echo "Line # $i: $line"          ((i++)) done echo "Total number of lines in file: $i"
  # The worst way to read file. echo "###############################" for fileline in $( cat $FILE); do          echo $fileline done
  # This is correct way to read file. echo "################################" k=1 while read line; do          echo "Line # $k: $line"          ((k++)) done < $FILE echo "Total number of lines in file: $k"
  Output: $ . /readfile .sh ############################### Line # 1: This is sample file Line # 2: This is normal text file Total number of lines in file : 1 ############################### This is sample file This is normal text file ################################ Line # 1: This is sample file Line # 2: This is normal text file Total number of lines in file : 3

좋은 웹페이지 즐겨찾기