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